Quelqu'un peut-il conseiller sur le SAS Informat approprié de lire dans une date d'heure (jj / mm / yyyy HH: mm) ???
EG P>
data _null_; informat from_dt datetime????.; input from_dt ; put from_dt=; cards; 01/01/1960 00:00 ;run;
5 Réponses :
Cette entrée à partir du SAS Knowledowbase comprend le code d'analyse et de mise en forme DateTime. On dirait que SAS a un excellent système d'aide en ligne. P>
Le troisième message dans Cet échange sur Google Groupes peut être utile aussi. Il parle de saisir DateTime et fournit du code. P>
Votre question est si difficile à déchiffrer et je sais si peu de sas, c'est à peu près tout ce que je peux offrir. J'espère que cela aide. P>
SAS peut ne pas prendre en charge le format DateTime spécifique que vos données sont intégrées. Vous pouvez soit essayer de convertir les données entrantes en un format FRENDLIER ou vous pouvez analyser la dateTime à l'aide du SUBSTR , DHMS et MDO Fonctions Fonctions: ou vous pouvez également convertir la dateTime chaîne dans un format DateNew.d et entrez la chaîne formatée: p> La conversion peut être compressée à une seule déclaration complexe, créant ainsi une macro pour cela pourrait être une bonne Décision. P> P>
Je ne pense pas que Informat spécifique est intégré, mais il est relativement facile de rouler le vôtre. Vous trouverez ci-dessous un exemple de création d'une DateTime Informat personnalisé (ceci nécessite un ensemble de données CNTLIN) et un format personnalisé (à l'aide de l'instruction Picture) qui se lit dans votre date d'heure spécifique, puis le format de la sorte pour regarder la même chose que l'entrée. Je l'ai simplifié en supposant que la partie temporelle était toujours minuit (00:00), mais il peut être facilement étendu si vous devez également garder une trace des pièces temporelles également (changez simplement le numéro 86400 à 3600 pour obtenir toutes les heures et 60 pour chaque minute). Il est utile de voir ce qui se passe si vous ouvrez le jeu de données Work.infmt pour voir à quoi cela ressemble. Ceci a donné une sortie comme celle-ci: P> 278 data _null_;
279 input from_dt $ 1-20;
280 format from_dt2 mydt.;
281 from_dt2=input(from_dt, dtwithspace.);
282 put from_dt2=;
283 cards;
from_dt2=01/01/1960 00:00
from_dt2=01/02/1999 00:00
La famille des informatismes Anydt * travaille généralement.
Si quelqu'un essaie cela et que des problèmes avec le mois et la date d'être interprétés de manière incorrecte, essayez de mettre à jour le daestyle en exécutant Options DyTestyle = DMY; dmy; code> avant l'exemple ci-dessus