DATA Step, Macro, Functions and more

dhms datetime conversion

Reply
New Contributor
Posts: 2

dhms datetime conversion

Hi All,

I have a problem that I have research many different ways.  I'm trying to import an excel spreadsheet that contains a date field that is customized as such  1/14/2018 10:43:00 AM which is the variable 'e' below. I imported the data using a libname, an import proc and also added options to the import with no success .  The problem is as follows  

 

Here's the code.

data fix;

set sr222;

x=e;

dt1 = dhms(x,0,0,0);

format dt1 datetime20.:

run:

 

It converts that variable okay but SAS is adding to the date.  For example:

incoming date = 1/5/2018 3:10:00 PM 

conversion date = 06JAN2078:15:10:00

 

can anybody please help

 

 

PROC Star
Posts: 1,357

Re: dhms datetime conversion

if i understand you correctly, your x , e are datetime values and not date values, you perhaps need to do

 

data fix;

set sr222;

x=e;

dt1 = dhms(datepart(x),0,0,0);

format dt1 datetime20.:

run:

PROC Star
Posts: 8,117

Re: dhms datetime conversion

The difference between what you have coming in, and what you're getting, is simply the difference between SAS datetimes and Excel datetimes. One represents the number of seconds since Jan 1, 1900, while the other (SAS) represents the number of seconds since Jan 1, 1960.

 

To convert the datetimes you can use code like:

data fix;
  set sr222;
  dt1 = e-21916*86400;
  format dt1 datetime20.:
run:

Art, CEO, AnalystFinder.com

 

Ask a Question
Discussion stats
  • 2 replies
  • 104 views
  • 0 likes
  • 3 in conversation