## Extracting and adding time lag

Solved
Occasional Contributor
Posts: 16

# Extracting and adding time lag

Dear All - I have been trying to write a query in SAS EG in which I need to add the time difference of 30 minutes as per the following date and time format:

1141013222329

The above format means 13OCT2014 22:22:39

Now I want to extract processing done after 30 minutes of time difference.

and the desired result should be 13OCT2014 22:52

Can somebody help me to get this thing done.

thanks

Ather

Accepted Solutions
Solution
‎11-11-2014 09:10 AM
New Contributor
Posts: 3

## Re: Extracting and adding time lag

Hi.

Your date time does not mean 13OCT2014 22:22:39, it means 13OCT2014 22:23:39.

The following, while far from elegant, will get the job done, as long as the curious leading "1" doesn't change.

data test;

dtinput=put(1141013222329,best13.);

dtstr1=substr(dtinput,2,6) ||" "|| substr(dtinput,8,2) ||":"|| substr(dtinput,10,2) || ":" || substr(dtinput,12,2);

dtnumeric=input(dtstr1(anydtdtm19.);

processInterval=intnx("dtminute",dtnumeric,30,"s");

format processInterval datetime;

run;

*Result processInterval = 13Oct14:22:53:29  ;

-Joel.

All Replies
Super User
Posts: 10,570

## Re: Extracting and adding time lag

First of all you need to provide a rule which digit positions in your original value correspond to day, month, year, hours, minutes and seconds.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Super User
Posts: 9,840

## Re: Extracting and adding time lag

If its a datetime value (and I am in meeting so cant check), then you can use intck on the time part to increment 30 minutes and then use that with the datepart.

Solution
‎11-11-2014 09:10 AM
New Contributor
Posts: 3

## Re: Extracting and adding time lag

Hi.

Your date time does not mean 13OCT2014 22:22:39, it means 13OCT2014 22:23:39.

The following, while far from elegant, will get the job done, as long as the curious leading "1" doesn't change.

data test;

dtinput=put(1141013222329,best13.);

dtstr1=substr(dtinput,2,6) ||" "|| substr(dtinput,8,2) ||":"|| substr(dtinput,10,2) || ":" || substr(dtinput,12,2);

dtnumeric=input(dtstr1(anydtdtm19.);

processInterval=intnx("dtminute",dtnumeric,30,"s");

format processInterval datetime;

run;

*Result processInterval = 13Oct14:22:53:29  ;