Publié le :
Data Management CREATION_INTERNE

Formats d'image (Picture Formats) et directives de date

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script explore les fonctionnalités avancées de la procédure PROC FORMAT avec l'instruction PICTURE. Il montre comment utiliser des directives de type strftime (ex: %Y, %m) pour formater des valeurs datetime. Il inclut des exemples pour le formatage standard, la gestion des arrondis, l'utilisation de 'datetime_util' pour représenter minuit comme 24:00:00, et le formatage de durées (intervalles).
Analyse des données

Type : CREATION_INTERNE


Toutes les données sont générées dynamiquement dans des étapes DATA _NULL_ à l'aide de littéraux datetime.

1 Bloc de code
PROC FORMAT
Explication :
Création d'un format d'image 'dbdate' pour afficher une valeur datetime au format standard YYYY-MM-DD:HH:MM:SS.
Copié !
1title1 '12.2.1 Picture Formats';
2title2 'Using Date Directives';
3PROC FORMAT;
4 picture dbdate
5 other = '%Y-%0m-%0d:%0H:%0M:%0S' (datatype=datetime);
6 RUN;
2 Bloc de code
DATA STEP Data
Explication :
Application du format 'dbdate' dans une étape Data _NULL_ et via une macro variable avec %sysfunc.
Copié !
1DATA _null_;
2 now = '11sep2010:15:05:27'dt;
3 put now=;
4 put now= dbdate.;
5 call symputx('selldate',now);
6 RUN;
7 
8%put %sysfunc(putn(&selldate,dbdate.));
3 Bloc de code
PROC FORMAT
Explication :
Définition de formats pour afficher le nom complet (%B) ou abrégé (%b) du mois à partir d'une valeur datetime.
Copié !
1PROC FORMAT;
2 picture monthname
3 other = '%B ' (datatype=datetime);
4 picture monthabb
5 other = '%b ' (datatype=datetime);
6 RUN;
4 Bloc de code
DATA STEP Data
Explication :
Test de l'affichage des noms de mois formatés.
Copié !
1DATA _null_;
2 now = '11sep2010:15:05:27'dt;;
3 put now=;
4 put now= monthname.;
5 put now= monthname3.;
6 put now= monthabb.;
7 RUN;
5 Bloc de code
PROC FORMAT
Explication :
Création d'un format avec l'option (round) pour gérer l'arrondi des secondes lors de l'affichage.
Copié !
1PROC FORMAT;
2 picture myDayT (round)
3 low - high = '%0d%b%0Y:%0H:%0M:%0S'(datatype=datetime)
4 ;
5RUN;
6 Bloc de code
DATA STEP Data
Explication :
Démonstration de l'effet de l'arrondi sur les valeurs datetime proches de la seconde suivante ou du jour suivant.
Copié !
1DATA _null_;
2 datetime = '01apr2011:12:34:56.7'dt;
3 put datetime=myDayT.;
4 datetime = '01apr2011:23:59:59.7'dt;
5 put datetime=myDayT.;
6 RUN;
7 Bloc de code
PROC FORMAT
Explication :
Utilisation de datatype=datetime_util pour permettre l'affichage de minuit comme '24:00:00' au lieu de '00:00:00' du jour suivant, utile dans l'industrie des services publics.
Copié !
1PROC FORMAT;
2 picture abc (default=19)
3 other='%Y-%0m-%0d %0H:%0M:%0S' (datatype=datetime_util);
4 RUN;
8 Bloc de code
DATA STEP Data
Explication :
Comparaison de l'affichage pour minuit pile et une seconde après minuit avec le format spécial.
Copié !
1DATA _null_;
2 x = '01nov2008:00:00:00'dt; put x=abc.;
3 x = '01nov2008:00:00:01'dt; put x=abc.;
4 RUN;
9 Bloc de code
PROC FORMAT
Explication :
Formatage d'une durée (différence entre deux dates) utilisant la directive %n pour compter le nombre total de jours.
Copié !
1PROC FORMAT;
2 picture durtest(default=27)
3 other='%n days %H hours %M minutes' (datatype=time);
4 RUN;
10 Bloc de code
DATA STEP Data
Explication :
Calcul d'une différence entre deux datetimes et affichage du résultat sous forme de durée (jours, heures, minutes).
Copié !
1DATA _null_;
2 start = '01jan2010:12:34'dt;
3 END = '01feb2010:18:36'dt;
4 diff = END - start;
5 put diff=durtest.;
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.

Documentation liée : Data Management

Sujet / Mot-cléLien vers la ressource
DOC Formats définis par l'utilisateur fr/sampleCode/FORMAT4C19
Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« L'instruction PICTURE de la procédure PROC FORMAT est l'outil le plus flexible de l'arsenal SAS pour s'affranchir des formats de date et de temps standards. En utilisant des directives de style POSIX (comme %Y pour l'année ou %0m pour le mois avec zéro non significatif), vous pouvez construire des masques d'affichage répondant à des normes strictes, telles que l'ISO 8601 ou des formats de durées métier complexes. La puissance de cette approche réside dans l'utilisation de l'option DATATYPE : elle informe SAS si la valeur traitée est une date, une heure ou un datetime, garantissant que les calculs internes de formatage s'appliquent sur les bonnes unités. »