Converting datetime to SAS date format

Accepted Solution Solved
Reply
Contributor
Posts: 71
Accepted Solution

Converting datetime to SAS date format

[ Edited ]

Hello everybody,

I want to convert datetime variable (ex. 24MAR2008:00:00:00) to date variable (ex. 24MAR2008). I show attributes of datetime variable below:

Name & Label: TRD_EVENT_DT

Format & Informat: DATETIME19.

Type: Num.

 

I do not want to create new variable and just want to change current datetime var. to date var. format with same name.

 

How can I do that?

Thanks in advance.


Accepted Solutions
Solution
a month ago
Grand Advisor
Posts: 10,210

Re: Converting datetime to SAS date format

To change existing variable:

data want;
   set have;
   trd_event_dt = datepart(trd_event_dt);
   format trd_event_dt date9.;
run;

Note if you use

 

Data Have;

   set have;

 

to implement this code DO NOT EVER RUN THAT DATASTEP AGAIN. The second pass would attempt to tread the date as a datetime and result will likely be all of your dates as 01JAN1960. You would have to go back to a previous step to recreate your "have" data set prior to the datepart

data example;
  x= '31Dec2017:12:35:27'dt;
  put x= datetime20.;
  x = datepart(x);
  put 'first datepart ' x= date9.;
  x= datepart(x);
  put 'second datepart ' x= date9.;
run;

View solution in original post


All Replies
Super User
Posts: 1,111

Re: Converting datetime to SAS date format

data want;
datetime='24MAR2008:00:00:00'dt;
date=datepart(datetime);
format date date9. datetime datetime19.;
run;
Thanks,
Jag
Solution
a month ago
Grand Advisor
Posts: 10,210

Re: Converting datetime to SAS date format

To change existing variable:

data want;
   set have;
   trd_event_dt = datepart(trd_event_dt);
   format trd_event_dt date9.;
run;

Note if you use

 

Data Have;

   set have;

 

to implement this code DO NOT EVER RUN THAT DATASTEP AGAIN. The second pass would attempt to tread the date as a datetime and result will likely be all of your dates as 01JAN1960. You would have to go back to a previous step to recreate your "have" data set prior to the datepart

data example;
  x= '31Dec2017:12:35:27'dt;
  put x= datetime20.;
  x = datepart(x);
  put 'first datepart ' x= date9.;
  x= datepart(x);
  put 'second datepart ' x= date9.;
run;
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 89 views
  • 0 likes
  • 3 in conversation