我需要一种方法来告诉我调度是否会迟到。我使用TimeTime的Time数据类型。问题是我们的日子从下午4:00开始,可能在2:00结束。
在下面的示例中,dateiff说我们凌晨1点(我们是),但我需要在第二天凌晨1点工作,而不是今天。
这就是我用来在几分钟内获得差异的方法。
DATEDIFF(MINUTE, CONVERT (time, SYSDATETIME()),[DeliveryTime] ) as MinuteDiff
Customer DeliveryTime CurrentTime MinuteDiff
10091 23:00:00.0000000 21:07:11.2617768 113
10092 00:00:00.0000000 21:07:11.2617768 -1267 <<
10093 01:00:00.0000000 21:07:11.2617768 -1207 <<
10102 02:00:00.0000000 21:07:11.2617768 -1147 <<
10106 22:00:00.0000000 21:07:11.2617768 53
答案 0 :(得分:1)
检查时间是否过早。如果是这样,请添加偏移量:
(CASE WHEN CONVERT(time, SYSDATETIME()) < DeliveryTime
THEN DATEDIFF(MINUTE, CONVERT(time, SYSDATETIME()), DeliveryTime)
ELSE 24*60 + DATEDIFF(MINUTE, CONVERT(time, SYSDATETIME()), DeliveryTime)
END) as MinuteDiff