如何解决如果日期超过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'
注意事项: enddte和begindte的日期格式如下,例如: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
当然,这假定这两列是合法的类似日期的数据类型,例如datetime
或datetime2
。
我相信,我知道了。
search
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。