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

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Health and Life Sciences Learning

 

Need courses to help you with SAS Life Sciences Analytics Framework, SAS Health Cohort Builder, or other topics? Check out the Health and Life Sciences learning path for all of the offerings.

LEARN MORE

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