BookmarkSubscribeRSS Feed
Lex_SAS
SAS Employee
In the same variable I have dates in the format YYYY-MM-DD and YYYY-MM-DDTHH:MM:SS

I want to convert the date part of these values to a SAS date. Can I do this with 1 informat or do I have to do some data driven preprocessing to discard the time information in records that have a time part ?

Example (with 2 different informats, depending on the data):

DATA _null_;
FORMAT sasdate date9.;
isodate="2005-12-23T07:23:11";
sasdate=DATEPART(INPUT(isodate, IS8601DT.));
PUT sasdate=;
isodate="2005-12-23";
sasdate=INPUT(isodate, IS8601DA.);
PUT sasdate=;
RUN;

sasdate=23DEC2005
sasdate=23DEC2005


Lex Jansen
2 REPLIES 2
Olivier
Pyrite | Level 9
Maybe I misunderstood your problem, but specifying in your informat that you only use the first 10 characters should behave in the same way with dates and datetimes, as in the example :

DATA _null_;
FORMAT sasdate date9.;
isodate="2005-12-23T07:23:11";
sasdate=INPUT(isodate, IS8601DA10.);
PUT sasdate=;
isodate="2005-12-23";
sasdate=INPUT(isodate, IS8601DA10.);
PUT sasdate=;
RUN;

Regards.
Olivier
Lex_SAS
SAS Employee
Thanks, Olivier.

I did not think about that.

Lex

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

New Learning Events in April

 

Join us for two new fee-based courses: Administrative Healthcare Data and SAS via Live Web Monday-Thursday, April 24-27 from 1:00 to 4:30 PM ET each day. And Administrative Healthcare Data and SAS: Hands-On Programming Workshop via Live Web on Friday, April 28 from 9:00 AM to 5:00 PM ET.

LEARN MORE

Discussion stats
  • 2 replies
  • 2434 views
  • 0 likes
  • 2 in conversation