我想在两次之间得到改变。当时间在同一天内时,差异是可以的。但是当时间跨过午夜时会得到错误的结果。
cut -f 3,3 -d '"' | sed s/^$/\"\"/g
给我结果480是正确的。但是
SELECT DATEDIFF(minute, '08:00',DATEADD(minute,-60, '17:00'))
给我结果-960哪个错了。我怎么处理它?我不想使用DateTime数据类型。
答案 0 :(得分:1)
您可以使用案例陈述,在这种情况下,您需要添加一天并获得结果,如
SELECT DATEDIFF(minute, '20:00',DATEADD(DAY,1,DATEADD(minute,-60, '05:00')))
答案 1 :(得分:0)
您可以使用以下代码:
SELECT DATEDIFF(minute, '20:00',getdate())
答案 2 :(得分:0)
这是一招。无需使用case
。将在两种情况下都有效
SELECT (DATEDIFF(minute, '08:00',DATEADD(minute,-60, '17:00')) + 1440) % 1440
SELECT (DATEDIFF(minute, '20:00',DATEADD(minute,-60, '05:00')) + 1440) % 1440
两种情况下的输出均为480
1440 - 一天的分钟数。当datediff返回负值时,将1440添加到案例将返回正确的值。而对于第二种情况,结果将是一些超过1天的值。在这种情况下,我们需要删除额外的值1440.需要% 1440
答案 3 :(得分:0)
尝试以下查询...进行相应的更改。
在CONVERT(DATE,DateOutColumn,103)时的情况> CONVERT(DATE,DateInColumn,103) 然后((ABS(DATEDIFF(MINUTE,CONVERT(TIME,TimeInColumn,108),'23:59:00.0000000')))+ 1+(ABS(DATEDIFF(MINUTE,CONVERT(TIME,TimeOutColumn,108),'00: 00:00.0000000')))))/ 60 其他 (DATEDIFF(MINUTE,CONVERT(TIME,TimeInColumn,108),CONVERT(TIME,TimeOutColumn,108)))/ 60