SAS - 小时比较

SAS - Comparison of Hours

我是 SAS 的新手,似乎无法比较时间。让我解释 : 我有一个 Date/Time(格式:ddmmmaa:hh:mm:ss)变量,我重新格式化(格式 TOD8:hh:mm:ss)只有时间。 有了这个特定的时间,我想把它放到一个时间段里。因此,如果时间介于某某时间之间,我会给他一个时间段。 我遇到的问题是我无法比较时间。这是我的代码:

data test;
    set WORK.TABLE;
    if 'hour'n > '09:00:00't and 'hour'n < '09:59:59't then 'time slot'n=0910;
    else if 'hour'n > '10:00:00't then 'time slot'n=1011;
    else 'time slot'n=-1;

run;

这给了我结果:

   Hour    |  time slot
------------------------
 08:06:00  |   1011
 09:30:00  |   1011
 11:00:00  |   1011

我认为它来自类型,但我找不到任何可以让我解决这个问题的文档。

如果你有什么想法或什么可以帮助我理解这个结果,那将对我有很大帮助。提前致谢

问题是你应用了一种格式,考虑到它改变了存储的值。这是一个错误的说法:一种格式只是应用了一种“显示”模式,仅此而已。 这就是为什么您可以将格式更改为您想要的格式而不会丢失任何信息的原因:)

要从日期时间中提取时间,请使用 timepart 函数。 然后您就可以将此值与其他时间进行比较:

data test;
    set work.table;

    attrib extracted_hours format=tod5.;
    extracted_hours = timepart(your_datetime);

    if '09:00:00't <= extracted_hours < '10:00:00't then 'time slot'n = 0910;
    else if '10:00:00't <= extracted_hours < '11:00:0't then 'time slot'n=1011;
    else 'time slot'n=-1;
run;