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.
- Comment obtenir la date du jour ?
- Comment extraire une date/heure d'une variable datetime ?
- Comment créer un format pour afficher la date ou un datetime au format dd/mm/yyyy ?
- Comment obtenir le numéro du jour de la semaine d'une date donnée ?
- Comment calculer les numéros de semaine ?
- Comment importer une variable au format date venant des logiciels Microsoft Excel ou Access ?
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; |
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; |
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 :
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; |
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 :
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; |
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; |
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; |
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 ; |
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 çaLes 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.