IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ SASConsultez toutes les FAQ

Nombre d'auteurs : 13, nombre de questions : 308, dernière mise à jour : 5 avril 2016  Ajouter une question

 

Cette F.A.Q., qui traite de tout type de questions portant sur l'outil SAS, a été réalisée à partir des contributions des membres des forums sas de developpez.com en vue de répondre à des questions fréquemment posées par les utilisateurs et grâce à SAS France qui a bien voulu nous donner accès à ses sources.

Si vous désirez contribuer à l'amélioration de cette F.A.Q., vous pouvez participer au billet de participation à l'enrichissement de la faq SAS , ou contacter le responsable SAS , ou contacter un des responsables de l'équipe Business Intelligence .

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe SAS de developpez.com remercie les contributeurs actuels : ash_rmy , bahraoui , datametric , fafabzh6 , Fleur-Anne.Blain , green_fr , oncle_pete , raf64flo , rastoix , s_a_m et steelspirit .

L'équipe SAS de developpez.com remercie aussi claudeLeloup et jacques_jean pour leurs relectures attentives de la F.A.Q. dans le but de chasser les fautes d'orthographes.

SommaireProgrammation sur SAS BASELes dates (6)
précédent sommaire suivant
 

En appelant la fonction date() : tout simplement.

Code sas : Sélectionner tout
1
2
3
4
5
6
DATA base; 
ATTRIB variable FORMAT=DDMMYY10. LABEL="Ma date"; 
variable=date(); 
RUN; 
PROC PRINT DATA=base LABEL; 
RUN;

Mis à jour le 27 mai 2008 rastoix

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.

Code sas : Sélectionner tout
1
2
3
4
5
6
7
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

Mis à jour le 10 octobre 2008 sas

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 :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
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

Mis à jour le 10 octobre 2008 sas

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 :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;

Mis à jour le 11 décembre 2009 fafabzh6 sas

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) :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
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 :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
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;

Mis à jour le 7 novembre 2011 fafabzh6 sas

Lors de l'importation de dates depuis les logiciels Microsoft Access et Microsoft Excel, il arrive fréquemment que les données soient enregistrées en datetime, c'est à dire en nombre de secondes depuis le 01/01/1960 à minuit.

Comme la plupart des fonctions dates du logiciel SAS sont prévues pour manipuler sur des dates SAS (des nombres de jours et non de secondes), il faut passer par l'intermédiaire de la fonction DATEPART qui extrait la date d'un datetime.

Le code SAS ci-après permet de transformer une datetime en date :

Code : Sélectionner tout
1
2
3
4
5
DATA maTable ; 
   SET maTable ; 
   maDate = DATEPART(maDate) ; 
   FORMAT maDate DDMMYY10. ; 
RUN ;

Mis à jour le 10 avril 2014 fafabzh6 olivier.decourt

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.