
FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
Sommaire→SAS BASE→DatesEn appelant la fonction date() : tout simplement.
DATA base;
ATTRIB variable FORMAT=DDMMYY10. LABEL="Ma date";
variable=date();
RUN;
PROC PRINT DATA=base LABEL;
RUN;
Pour récupérer la date, il suffit d'utiliser la fonction du module Base SAS : DATEPART.
Pour récupérer l'heure, il suffit d'utiliser la fonction du module Base SAS : TIMEPART.
data _null_;
variable = '30JUL1970:20:30:00'dt;
date = datepart(variable);
heure = timepart(variable);
put "la date est " date ddmmyy10.;
put "l'heure est " heure time5.;
run;
Le journal (log) indique :
la date est 30/07/1970
l'heure est 20:30
Vous devez exécuter une Proc Format avec une instruction Picture suivie de l'option datatype=date ou datetime.
L'ajout de caractères spéciaux dans le type de format permet ensuite de définir l'affichage souhaité avec le jour, le mois et l'année.
Exemple :
proc format;
picture ddmmyyyy other='
/%0m/%0Y' (datatype=date);
picture dtddmmyyyy other='
/%0m/%0Y' (datatype=datetime);
run;
data _null_;
dt='18dec2005 12:34:56'dt;
put dt dtddmmyyyy.;
d='14feb2005'd;
put d ddmmyyyy.;
run;
Résultat dans la fenêtre journal :
18/12/2005
14/02/2005
La fonction WEEKDAY retourne le numéro du jour de la semaine d'une date SAS, selon le calendrier anglo-saxon où le dimanche est le 1er jour de la semaine. Il faut donc retirer un jour pour retrouver le calendrier usuel conforme à la norme ISA 8601.
En voici une illustration :
data Datum;
attrib date format= weekdate17. informat=ddmmyy10. ;
num_day=weekday (date);
If num_day = 1 then num_day = 7;
else num_day=num_day -1;
input date : ddmmyy10.;
cards;
03.01.2011
04.01.2011
05.01.2011
06.01.2011
07.01.2011
08.01.2011
09.01.2011
;
run;
proc print noobs;
run;SAS9 propose plusieurs méthodes pour déterminer le numéro de la semaine en fonction d'une date SAS :
- la fonction WEEK ;
- les formats WEEKU, WEEKV, WEEKW.
Si vous utilisez SAS 8.2 ou une version antérieure, vous pouvez utiliser l'une des méthodes suivantes.
Ce programme calcule le numéro de semaine de la date courante, sachant qu'une semaine commence le dimanche (norme US) :
data _null_;
Attrib date length=3. label='Date' format=date7. ;
Attrib semaine length=3. label='N° de semaine';
madate = TODAY();
semaine = INTCK('week', INTNX('year',madate,0),madate);
put semaine =;
run;Ce programme calcule le numéro de semaine de la date courante, sachant qu'une semaine commence le lundi :
data _null_;
Attrib date length=3. label='Date' format=date7. ;
Attrib semaine length=3. label='N° de semaine';
date = TODAY();
semaine=-1;
cpt=0;
do until (semaine>0);
semaine=int((7*int((date+3156192)/7)+10 - mdy(1,1,year(date)+1 - cpt) - 3156192)/7);
cpt+1;
end;
output;
put semaine= ;
run;


