我有一堆开始和结束时间:
Start End Delta
20:47:22 22:47:02 120
22:49:12 0:48:47 -1321
0:50:42 2:50:22 120
...
23:11:07 2:10:44 -1261
我使用的代码如下(因为时间是一个varchar)
CONVERT(VARCHAR(8), DATEDIFF(minute, max(max_time), min(min_time)) ,114)
as delta_time,
但正如你所看到的,因为是一夜之间,所以结果是否定的。关于获得 119 分钟和 179 分钟的正确结果的任何想法(在上面的示例中)。
我想过使用 case 语句来检查 delta 何时为负数。如果是负数,则在结束时间上加上 24 小时,然后尝试减法。
CASE WHEN DATEDIFF(minute, max(max_time), min(min_time)) < 0 THEN
DATEADD(minute, 1440, min(min_time))
ELSE 0 END AS deltatest
但是这段代码不起作用,因为 SQL Server 只是将时间更改为:1900-01-02 00:48:47.000(第二天,不是我想要的 24:48:47)。有什么想法吗?有什么方法可以将转换添加到 CASE 语句?谢谢。