FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
En 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
;