logo

Dates : problème avec des dates

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.)