如何在SAS中计算两个24小时时间之间的时差?

How to calculate the time difference between two 24 hour times in SAS?

提问人:brittanne0113 提问时间:11/7/2023 最后编辑:Stu Sztukowskibrittanne0113 更新时间:11/7/2023 访问量:39

问:

我有四个变量:DATE1、DATE1SLEEPTIME、DATE2、DATE2WAKETIME。时间变量具有 TIME。格式。我正在尝试计算两个 24 小时时间之间的时差 (DURATION),但我没有得到正确的答案。

供参考:

DATE1=10/22/2019 
DATE2=10/23/2019
DATE1SLEEPTIME=20:50:00
DATE2WAKETIME=5:00:00

我试过了这个:

duration=INTCK('minute',DATE1SLEEPTIME,DATE2WAKETIME)

此代码导致 duration=0:15

我也试过了

duration=mod(24+(DATE1SLEEPTIME-DATE2WAKETIME)/3600,24)

此代码导致 duration=0:00:16。

这些都不正确。正确答案应该在 530(分钟)左右。

日期 时间 SAS

评论


答:

2赞 Stu Sztukowski 11/7/2023 #1

将日期和时间转换为日期时间,然后与参数一起使用。这将计算两个日期时间之间的分钟数。intckdtminute

data want;
    date1 = '22OCT2019'd;
    date2 = '23OCT2019'd; 
    date1sleeptime = '20:50:00't;
    date2waketime  = '5:00:00't;

    date1datetime = dhms(date1, hour(date1sleeptime), minute(date1sleeptime), 0);
    date2datetime = dhms(date2, hour(date2waketime), minute(date2waketime), 0);

    duration = intck('dtminute', date1datetime, date2datetime);
run;
duration
490

评论

1赞 Tom 11/7/2023
或者只需减去两个日期时间值并除以 60,因为一分钟内有 60 秒。
0赞 whymath 11/8/2023
或者用它来使其更紧凑。date1datetime = dhms(date1,0,0,date1sleeptime);