Solved
Contributor
Posts: 68

# Difference between two time periods

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

Thanks,

Accepted Solutions
Solution
‎05-30-2014 10:49 AM
Super User
Posts: 10,850

## Re: Difference between two time periods

```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

All Replies
Super User
Posts: 24,009

## Re: Difference between two time periods

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.

Contributor
Posts: 68

## Re: Difference between two time periods

I did subtract the two . However, I like to get the results in Days Hours using format statement or functions?

Super User
Posts: 24,009

## Re: Difference between two time periods

How would you like that to look? I don't believe there's a standard way to indicate days for duration in standard format.

Posts: 5,624

## Re: Difference between two time periods

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.

PG
Contributor
Posts: 68

## Re: Difference between two time periods

Thanks. I will give this a try

Contributor
Posts: 50

## Re: Difference between two time periods

The intck function does this for you.  You specify what interval  you want e.g. days, hours

and the different intervals you can use:

Contributor
Posts: 22

## Re: Difference between two time periods

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;

Solution
‎05-30-2014 10:49 AM
Super User
Posts: 10,850

## Re: Difference between two time periods

```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

Contributor
Posts: 68

## Re: Difference between two time periods

Thanks  for sample code. I will give it  a try

🔒 This topic is solved and locked.