如果日期超过 1 天/24 小时,则升旗

Raise flag if date exceeds 1 day / 24 hours

我正在尝试创建一个列,当持续时间为初始日期的一天(24 小时或更长时间)时会引发一个标志。

select 
    case when (enddte - begindte) > '23:59:59.000'  
        then '1' 
        else '0' 
    end as flag 
from shipment 
where ship_id = '14723'

注意事项: enddte 和 begindte 的日期格式如下 i.g.: 2017-09-06 20:22:36.000

我是否需要进一步分解上面计算日 - 天和小时 - 小时的案例陈述?

我相信,我想通了。

select 
    case 
        when (datediff(hour,enddte, begindte)/24.0) > 1 
            then '1' 
            else '0' 
        end as flag 
from shipment 
where ship_id = '1326747-2'

datediff() 不是完成此任务的好工具。每次越过边界时它都会递增 1,这会以某种方式产生 counter-intuitive 结果。通常,今天 13:59 和今天 14:01 之间的小时差为 1.

您可以使用简单的日期算法,如下所示:

select s.*,
    case when enddte > dateadd(day, 1, begindte) then 1 else 0 end as flag
from shipment s
where ship_id = 14723

当然,这假设这两个列是合法的 date-like 数据类型,例如 datetimedatetime2.