ISO8601

Reply
SAS Employee
Posts: 47

ISO8601

In the same variable I have dates in the format YYYY-MM-DD and YYYY-MM-DDTHH:MMSmiley FrustratedS

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
Super Contributor
Posts: 260

Re: ISO8601

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
SAS Employee
Posts: 47

Re: ISO8601

Thanks, Olivier.

I did not think about that.

Lex
Ask a Question
Discussion stats
  • 2 replies
  • 1073 views
  • 0 likes
  • 2 in conversation