Dates SAS : Pourquoi le "1er Janvier 1960" dicte votre code (et comment maîtriser les formats)

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Ce script met en lumière le concept fondamental de la temporalité sous SAS : la date n'est rien d'autre qu'un nombre entier représentant les jours écoulés depuis l'époque de référence (1er janvier 1960). L'expert retiendra ici la distinction cruciale entre le stockage (la valeur interne permettant l'arithmétique) et la présentation (le format visuel). L'application du format mmddyy10. démontre qu'on peut modifier l'affichage pour l'utilisateur sans jamais altérer la donnée brute sous-jacente, garantissant ainsi la fiabilité des calculs ultérieurs

Ce script illustre comment SAS© stocke les dates sous forme numérique (nombre de jours depuis le 1er janvier 1960). Il crée un jeu de données contenant une valeur numérique brute, une date littérale et la date du jour, puis montre comment appliquer un format pour rendre ces valeurs lisibles par l'humain.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées dynamiquement dans l'étape Data sans dépendance externe.

1 Bloc de code
DATA STEP Data
Explication :
Création d'une table 'date' contenant trois variables : une valeur numérique représentant une date (365 jours après le 01/01/1960), une date littérale SAS, et la date actuelle via la fonction today().
Copié !
1/*
2Find the internal value for a given data in SAS.
3*/
4 
5DATA date;
6 date_numeric = 365;
7 date_literal = '02JAN1960'd;
8 today = today();
9RUN;
2 Bloc de code
PROC PRINT
Explication :
Affichage du contenu de la table 'date'. Les dates s'afficheront sous leur forme numérique interne (nombre de jours).
Copié !
1PROC PRINT DATA = date;
2RUN;
3 Bloc de code
DATA STEP Data
Explication :
Création de la table 'date2' à partir de 'date'. Application du format 'mmddyy10.' aux trois variables de date pour les afficher sous la forme MM/JJ/AAAA.
Copié !
1* To format them;
2DATA date2;
3 SET date;
4 FORMAT date_literal date_numeric today mmddyy10.;
5RUN;
4 Bloc de code
PROC PRINT
Explication :
Affichage de la table 'date2' avec les dates correctement formatées.
Copié !
1PROC PRINT DATA = date2;
2RUN;
L'Astuce Pro
Puisque SAS stocke les dates comme de simples nombres entiers, vous pouvez effectuer des opérations arithmétiques directes comme l'addition ou la soustraction de jours (par exemple date + 7 pour ajouter une semaine) sans avoir besoin d'utiliser des fonctions complexes, ce qui est plus rapide lors du traitement de gros volumes de données.
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

Aucune documentation spécifique pour cette catégorie.