显示夜班的适当微小差异。

时间:2016-10-19 01:16:18

标签: sql sql-server-2008

我需要一种方法来告诉我调度是否会迟到。我使用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

1 个答案:

答案 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