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

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

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
  • 2411 views
  • 0 likes
  • 2 in conversation