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

I have data set dtset1.

sn.  stdt;

1  10/10/2010

2  10/19/2011

stdt is a character variable with length 10.

I need to convert this into numeric date like datetime20.

I tried this;

data new-dtset;

set dtset1 (rename=(stdt=stdt_n));

stdt=input(stdt_n, date9.);

format stdt datetime20.;

drop stdt_n;

run;

but It didn't work, It's converting to numberic but showing as missing value.

I need help to solve this problem.

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
4 REPLIES 4
MichaelLarsen
SAS Employee

First you need to change the informat reading the date and secondly you must convert that date value into a datetime value using the dhms function.

data newdtset;

set dtset1 (rename=(stdt=stdt_n));

stdt=dhms(input(stdt_n, mmddyy10.),0,0,0);

format stdt datetime20.;

drop stdt_n;

run;

Regards,

Michael

Kurt_Bremser
Super User

Replace

stdt=input(stdt_n, date9.);

with

stdt = input(stdt_n,mmddyy10.) * 86400;

Since you want it to display as a datetime value, it needs to count the seconds from 01jan1960 instead of just the days.

Ksharp
Super User

Directly use informat .

option datestyle=mdy;
data have;
input sn  stdt : $20.;
d=input(stdt,anydtdtm20.);
format d datetime.;
cards;
1  10/10/2010
2  10/19/2011
;
run;

Xia Keshan

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

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 2764 views
  • 3 likes
  • 4 in conversation