如果日期超过1天/24小时,请升起标志



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

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

需要注意的事项:结束日期和开始日期的格式如下:2017-09-06 20:22:36.000

我是否需要进一步分解以上计算日和小时的情况说明?

datediff()不是执行此任务的好工具。每次越过边界时,它都会增加1,这在某种程度上会产生反直觉的结果。通常,今天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

当然,这假设这两列是合法的类似日期的数据类型,例如datetimedatetime2

我相信,我已经想通了。

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

最新更新