Desktop productivity for business analysts and programmers

Extracting and adding time lag

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 16
Accepted Solution

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 JPM
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  ;

Good luck in your project.

-Joel.

View solution in original post


All Replies
Super User
Posts: 7,431

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
Super User
Super User
Posts: 7,720

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 JPM
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  ;

Good luck in your project.

-Joel.

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 374 views
  • 0 likes
  • 4 in conversation