Si vous voulez exactement yyyymmmdd
alors vous devrez créer votre propre format pour le faire, mais vous êtes heureux avec un builtin alors que ce qui suit devrait faire. Il suffit de passer le jour de la semaine et de convertir le reste en utilisant un informat:
data _null_;
mytxtdate = "Saturday 14 Jan 2017 00:00:00";
mydate = input(compress(substr(mytxtdate,index(mytxtdate,' '))),date9.);
format mydate yymmdd10.;
put _all_;
run;
Ceci est certainement gênant. Je serais intéressé de savoir s'il existe un moyen de faire cela en un seul interlocuteur en utilisant moins de 4 fonctions de pas de données. La logique est ici:
- Passez au premier espace en utilisant
index
.
- Retirez tous les espaces de la chaîne à partir de ce moment-là à l'aide
substr
et compress
- entrée comme date SAS en utilisant la
date9.
informat, qui se penchera sur seulement les 9 premiers caractères de la chaîne résultante et ignorer le reste.
Votre code génère la date en tant que "2002-01-14", ce qui correspond à la mauvaise année. Le mois et la date vont bien? http://imgur.com/kjDaQ4z – AngryWhopper
Correction! Je me demande s'il y a un moyen plus court? – user667489
Cela a bien fonctionné. Je vous remercie! Je vais modifier avec et mettre à jour si je trouve quelque chose de plus court. – AngryWhopper