Bonjour.
Dans une table SAS que j’ai récupérée, j’ai une variable qui contient manifestement une date, qui semble numérique sur une longueur de 8, mais elle a un aspect bizarre. Une valeur, par exemple, est : 14JUN1977:00:00:00. Les fonctions dates habituelles (YEAR, INTNX, etc.) me renvoient des résultats aberrants quand je les applique à cette variable. Que faire ?
D’avance merci.
Vous êtes en présence d’une variable de « type » Datetime (stockée en nombre de secondes depuis le 01/01/1960 à minuit). C’est donc bien du numérique sur 8 octets (8 octets ça permet de stocker des entiers énormes). Mais ce n’est pas une DATE au sens où les fonctions comme YEAR s’y attendent, c’est à dire un nombre de jours depuis le 01/01/1960. Quant à son aspect « bizarre », il s’explique par un format DATETIME. spécialement conçu pour ce type d’information.
La fonction DATEPART permet d’extraire la partie « date » d’un Datetime. Mais il faut bien penser à affecter un format date (DDMMYY10. par exemple) à la variable ainsi créée.
Une étape Data comme celle-ci résoud le problème :
DATA ma_nouvelle_table ; SET mon_ancienne_table ; variable_date = DATEPART(variable_datetime) ; FORMAT variable_date DDMMYY10. ; RUN ;
(Il convient bien sûr de changer les noms des tables et des variables pour coller à votre sujet.)