The sample code below illustrates one way to compute the difference between two time variables, even when the latter is past midnight.
data duration; input jobid $ start time8. finish time8. miscvar $; if finish lt start then duration=('24:00:00't-start)+finish; else duration=finish-start; datalines; J115 05:54:3308:23:33 ABCDUL J116 06:12:3410:12:22 ABCCBA J117 11:54:2211:33:22 ABCPAL J118 12:23:2214:24:34 ABCJAM J119 13:24:5413:55:22 ABCRAB J120 14:32:2214:54:12 ABCPAL J121 22:44:4106:55:22 ABCEBS ;run;
proc print; format start time8. finish time8. duration time8.;run;
The results of PROC PRINT are below:
Obs jobid start finish miscvar duration
1 J115 5:54:33 8:23:33 ABCDUL 2:29:00
2 J116 6:12:34 10:12:22 ABCCBA 3:59:48
3 J117 11:54:22 11:33:22 ABCPAL 23:39:00
4 J118 12:23:22 14:24:34 ABCJAM 2:01:12
5 J119 13:24:54 13:55:22 ABCRAB 0:30:28
6 J120 14:32:22 14:54:12 ABCPAL 0:21:50
7 J121 22:44:41 6:55:22 ABCEBS 8:10:41