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é !
title1 '12.2.1 Picture Formats';
title2 'Using Date Directives';
proc format;
picture dbdate
other = '%Y-%0m-%0d:%0H:%0M:%0S' (datatype=datetime);
run;
1
title1 '12.2.1 Picture Formats';
2
title2 'Using Date Directives';
3
PROC 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é !
data _null_;
now = '11sep2010:15:05:27'dt;
put now=;
put now= dbdate.;
call symputx('selldate',now);
run;
%put %sysfunc(putn(&selldate,dbdate.));
1
DATA _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é !
proc format;
picture monthname
other = '%B ' (datatype=datetime);
picture monthabb
other = '%b ' (datatype=datetime);
run;
1
PROC 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é !
data _null_;
now = '11sep2010:15:05:27'dt;;
put now=;
put now= monthname.;
put now= monthname3.;
put now= monthabb.;
run;
1
DATA _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.
low - high = '%0d%b%0Y:%0H:%0M:%0S'(datatype=datetime)
4
;
5
RUN;
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é !
data _null_;
datetime = '01apr2011:12:34:56.7'dt;
put datetime=myDayT.;
datetime = '01apr2011:23:59:59.7'dt;
put datetime=myDayT.;
run;
1
DATA _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.
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é !
data _null_;
start = '01jan2010:12:34'dt;
end = '01feb2010:18:36'dt;
diff = end - start;
put diff=durtest.;
run;
1
DATA _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.
« 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. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.