I am trying to take the difference between the current time and a scheduled time which are in HH:MM format (I used TOD5.2 to convert them) and see negative hours.
Please let me know if more information is needed.
Thank you.
Thank you for the update. The code you provided works when both values are in numeric format.
data want;
t1='13:00't;
t2='15:00't;
dif=intck('hour',t2,t1);
run;
My fields are in hh:mm format and if converted to numeric then the years, months ,days and seconds since 1960.
I am using the below code but when the hours are negative my values are not right.
data work.demo_1;
set work.demo_base;
format dif tod5.2;
dif='Time1'n - 'Time2'n;
run;
Why would you store time values with years included?
Do you have DATETIME values instead?
Even so the difference between two datetime values is still going to be a number of seconds. But it could be many days worth of seconds.
Did you want extract just the time part from the datetime value and compare those? If so use the TIMEPART() function to extract just the time since midnight from your time since 1960 values.
Or perhaps, are you looking for picture format?
proc format;
picture hr (default=6)
low - -1 = '99:99' (prefix='-' mult=100)
1 - high = '99:99' ( mult=100);
;
data want;
t1='13:00't;
t2='15:00't;
dif=intck('hour',t2,t1);
format dif hr. t time5.;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.