DATA Step, Macro, Functions and more

Create datetime from date and time

Occasional Contributor
Posts: 12

Create datetime from date and time

[ Edited ]


I have a dataset where there are date and time variables. Date is in yyyy-mm-dd format and time is time5. format. Both are text varaibles.

I need to create a date time variable with iso8601 format. Some of the time values are missing.

I need a result with this condition:

if time is missing, then datetime variable should have only date part.

later I need to convert this datetime variable into Numeric value.


for example:

vsdat                    vstim


2017/12/22         10:53




where vstim is blank.

Super User
Posts: 2,075

Re: base sas

Posted in reply to rashmirao99

@rashmirao99  If your vsdat variable and time vstim are  numeric, I'd suggest to keep the new variable as a datetime variable substituting 0 in place of missing and combine the two variables using dhms function. This will help in maintaining consistency in my opinion.  

Respected Advisor
Posts: 4,802

Re: base sas

Posted in reply to rashmirao99

One way to go:

data have;
  infile datalines dlm=' ' truncover;
  input vsdat $10. vstim $5.;
2017/12/22 10:53

data want;
   set have;
   format dttm B8601DT.;
   dttm=input(catx(' ',vsdat,vstim),anydtdtm.);
Super User
Posts: 5,922

Re: Create datetime from date and time

Posted in reply to rashmirao99
You can't fulfil the requirement, at least not in SAS.
A numeric variable cannot contain mixed datetime and date values, this since formats can work only with either type. This is again feels like that someone who doesn't understand the implications for a requirement is set to specify one. And you with a quite distance from the end user just have to comply, no questions asked.
As suggested by others, set a valid time value when it's missing. Check with your stakeholders for guidance.
Or store the concatenated value in a string.
Data never sleeps
Ask a Question
Discussion stats
  • 3 replies
  • 4 in conversation