I would like to calculate difference between two time periods in days Hours, minutes ( how long it takes to complete the task)
for example difference between 12MAY2014:08:20:19:00 and 07MAY2014:08:00:45:00
Please help
Thanks,
data x; t1 = '12MAY2014:08:20:19.00'dt; t2 = '07MAY2014:08:00:45.00'dt; days = int((t1-t2)/'24:00:00't); time= mod((t1-t2),'24:00:00't); format time time8. t1 t2 datetime.; run;
Xia Keshan
Subtract the two records will give you the time in seconds. Then you can convert that to minutes/hours with some basic math (ie divide by 60). You can also try formatting using various time formats but because you cross days that might be an issue.
I did subtract the two . However, I like to get the results in Days Hours using format statement or functions?
How would you like that to look? I don't believe there's a standard way to indicate days for duration in standard format.
Take the difference between the two, the result is a number of seconds, then express in the required units:
data _null_;
t1 = '12MAY2014:08:20:19.00'dt;
t2 = '07MAY2014:08:00:45.00'dt;
dt = t1 - t2; /* time expressed in seconds */
dtStr = catx(":", put(dt/(24*60*60),6.0), put(mod(abs(dt),24*60*60),hhmm.));
put dt= dtStr=;
run;
PG
Message was edited by: PG To get the sign right all the time.
Thanks. I will give this a try
The intck function does this for you. You specify what interval you want e.g. days, hours
INTCK Function :: SAS(R) 9.4 Functions and CALL Routines: Reference, Second Edition
and the different intervals you can use:
http://support.sas.com/documentation/cdl/en/lrcon/67227/HTML/default/p0g056g35ez8son1sfavozh0lfb3.ht...http://support.sas.com/documentation/cdl/en/lefunctionsref/67239/HTML/default/viewer.htm#p1md4mx2crz...
Something like:
data _null_;
t1 = '12MAY2014:08:20:19.00'dt;
t2 = '07MAY2014:08:00:45.00'dt;
howlong = intck('second',t2,t1);
days = datepart(howlong); /* basically taken from Professional SAS Programming Secrets, dating back to V6.03 and page 366-367 */
partday = timepart(howlong);
put days 3. ':' partday time8.
run;
data x; t1 = '12MAY2014:08:20:19.00'dt; t2 = '07MAY2014:08:00:45.00'dt; days = int((t1-t2)/'24:00:00't); time= mod((t1-t2),'24:00:00't); format time time8. t1 t2 datetime.; run;
Xia Keshan
Thanks for sample code. I will give it a try
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!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.