BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
thesasuser
Pyrite | Level 9

The following code for outputing the date in uts format gives the data of Jan 1, 1960 instead of current date.

If keep the format as say date9. I get the correct value.

DATA createdates;
  current1= date();
  format current1  b8601dt.;
RUN;

PROC PRINT data=createdates;
  title 'The createdates data set';
  var current1  ;
RUN;:

The output is

The createdates data set 13:25 Wednesday, June 7, 2017 1

Obs current1

1 19600101T054937

 

Can anybody help?

1 ACCEPTED SOLUTION

Accepted Solutions
kiranv_
Rhodochrosite | Level 12

change it to

 

DATA createdates;
  current1= datetime();
  format current1  b8601dt.;
RUN;

View solution in original post

5 REPLIES 5
collinelliot
Barite | Level 11

Looks like you're applying a datetime format to a date value.

kiranv_
Rhodochrosite | Level 12

change it to

 

DATA createdates;
  current1= datetime();
  format current1  b8601dt.;
RUN;
thesasuser
Pyrite | Level 9

Thanks
it worked

 The createdates data set                     13:58 Wednesday, June 7, 2017   1

                                                       Obs       current1

                                                        1     20170607T135842

 

I there a way can remove the T and have the values like "20170607135842".

The idea is to have it in YYYYMMDDHHmmSS?

kiranv_
Rhodochrosite | Level 12

you may to have to use proc format  with picture statement as shown below

PROC FORMAT;
  picture dt other='%0Y-%0m-%0d%0H%0M%0S' (datatype=datetime);
RUN;
DATA createdates;
  current1= put(datetime(),dt.);
 
RUN;

.

 

thesasuser
Pyrite | Level 9

Thanks Kiran.

I appreciate your time and efforts in replying to me and reminding that datetime is the proper format to use.

My objective was to get date in the format YYYYMMDDHHmmSS.

So the last solution is not what I want.

I had to remove T from the output. So I used this. compress(put(datetime(),b8601dt.),'T');

For comparison I ran your and my solution

 

PROC FORMAT;
picture dt other='%0Y-%0m-%0d%0H%0M%0S' (datatype=datetime);
RUN;
DATA createdates;
current1= put(datetime(), dt.);
todays_date=compress(put(datetime(),b8601dt.),'T');
RUN;

and got the result as follows

 

current1 =    2017-06-07215453

todays_date= 20170607215454

There could be many other ways to do ,

I am accepting your earlier post as a solution. It put the ray of light  on the solution

Thanks once again.

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!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 8651 views
  • 3 likes
  • 3 in conversation