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

I have a datetime variable with values like "2014-02-10 01:11:50". They were imported as $19. I tried to use "usedate= yes", but it gave error message.

So I tried to change the datetime format after imported in as $19.  format, and then using the following codes to convert to datetime.:

 

     registration_time =input(registration_timestamp,anydtdtm.);
     format registration_time datetime19.;

 

however, some values are imcomplete, like "2013-12-16 08:", and in this case, the new varible registration_time was set to missing.

 

How can I avoid the missing values? actually i do not need the hh:mm:ss part, and I checked the data and all imcomplete ones are in the hh:mm:ss part.

 

Thanks

 

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User
241  data x;
242    registration_timestamp='2013-12-16 08:';
243    registration_date =input(registration_timestamp,yymmdd10.);
244    format registration_date yymmdd10. ;
245    put (_all_) (=);
246  run;

registration_timestamp=2013-12-16 08: registration_date=2013-12-16
NOTE: The data set WORK.X has 1 observations and 2 variables.

Perhaps the values have leading spaces?

What happened when you used the SCAN() function?

Perhaps that is not a space between the day and the hour, but some other character?  Perhaps that is not a hyphen but some other character?

 

View solution in original post

4 REPLIES 4
Tom
Super User Tom
Super User

If the values always have 10 digits of date values then juse a different INFORMAT.

registration_date =input(registration_timestamp,yymmdd10.);
format registration_date yymmdd10. ;

If the date part might be shorter because of single digit month and/or day then you migth first need to eliminate the time part.

registration_date =input(scan(registration_timestamp,1,' '),yymmdd10.);
format registration_date yymmdd10. ;
fengyuwuzu
Pyrite | Level 9
when I used
registration_date =input(registration_timestamp,yymmdd10.);
format registration_date yymmdd10. ;

all registration_date values became missing values.
Tom
Super User Tom
Super User
241  data x;
242    registration_timestamp='2013-12-16 08:';
243    registration_date =input(registration_timestamp,yymmdd10.);
244    format registration_date yymmdd10. ;
245    put (_all_) (=);
246  run;

registration_timestamp=2013-12-16 08: registration_date=2013-12-16
NOTE: The data set WORK.X has 1 observations and 2 variables.

Perhaps the values have leading spaces?

What happened when you used the SCAN() function?

Perhaps that is not a space between the day and the hour, but some other character?  Perhaps that is not a hyphen but some other character?

 

fengyuwuzu
Pyrite | Level 9
Hi Tom

Yes, it works. Not sure what I did yesterday, but today when I came back to office and tested again, and it works.

Thank you very much!

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
  • 4 replies
  • 805 views
  • 0 likes
  • 2 in conversation