Les données utilisées pour les exemples sont créées directement dans le script via une étape DATA avec des `datalines`. Le jeu de données 'test' contient des dates SAS et leurs équivalents numériques pour démontrer les fonctions de conversion.
1 Bloc de code
DATA STEP Data
Explication : Cette étape DATA crée le jeu de données 'test' avec deux variables: 'date' (format date SAS) et 'date2' (format numérique). Les valeurs sont définies via `datalines` pour servir d'exemples de conversion.
Copié !
data test;
input date date2;
informat date date9.;
format date date9.;
datalines;
31DEC2016 20161231
01JAN2017 20170101
;
run;
1
DATA test;
2
INPUT date date2;
3
informat date date9.;
4
FORMAT date date9.;
5
DATALINES;
6
31DEC2016 20161231
7
01JAN2017 20170101
8
;
9
RUN;
2 Bloc de code
PROC FCMP
Explication : Ce bloc `PROC FCMP` compile la fonction `DateToNum`. Elle prend une date SAS (`DateDay`), extrait l'année, le mois et le jour, puis les combine en un entier unique au format AAAAMMJJ (par exemple, 20161231 pour le 31 décembre 2016).
Copié !
proc fcmp outlib=work.cat_function.test;
function DateToNum(DateDay);
da = day(DateDay);
mo = month(DateDay);
ye = year(DateDay);
res = (ye * 10000) + (mo * 100) + da;
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function DateToNum(DateDay);
3
da = day(DateDay);
4
mo = month(DateDay);
5
ye = year(DateDay);
6
res = (ye * 10000) + (mo * 100) + da;
7
return(res);
8
endsub;
9
RUN;
3 Bloc de code
PROC FCMP
Explication : Ce bloc `PROC FCMP` compile la fonction `NumToDate`. Elle prend un entier au format AAAAMMJJ (`DateNum`), en déduit l'année, le mois et le jour, puis utilise la fonction `mdy` pour le convertir en une date SAS standard.
Copié !
proc fcmp outlib=work.cat_function.test;
function NumToDate(DateNum);
ye = int(DateNum/10000);
mo = int(DateNum/100)-(ye*100);
da = DateNum - (int(DateNum/100) * 100);
res = mdy(mo,da,ye);
return(res);
endsub;
run;
1
PROC FCMP outlib=work.cat_function.test;
2
function NumToDate(DateNum);
3
ye = int(DateNum/10000);
4
mo = int(DateNum/100)-(ye*100);
5
da = DateNum - (int(DateNum/100) * 100);
6
res = mdy(mo,da,ye);
7
return(res);
8
endsub;
9
RUN;
4 Bloc de code
DATA STEP
Explication : Cette étape DATA utilise les fonctions `DateToNum` et `NumToDate` compilées précédemment. Elle crée une nouvelle variable 'Date2Num' en convertissant la variable 'date' (SAS date) en format numérique et une variable 'num2date' en convertissant la variable 'date2' (numérique) en format date SAS.
Copié !
data test;
set test;
format num2date date9.;
Date2Num = DateToNum(date);
num2date = NumToDate(date2);
run;
1
DATA test;
2
SET test;
3
FORMAT num2date date9.;
4
Date2Num = DateToNum(date);
5
num2date = NumToDate(date2);
6
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Creation date : 14/04/2017 (fr)
Last update : 14/04/2017 (fr)
Author(s) : Nicolas DUPONT
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.