查询Datediff以在SQL Server中输出HH:MM

时间:2018-12-04 02:06:18

标签: sql sql-server relational-database

我正在使用SQL Server 2012,并且我有两列startend,它们的varchar(5)值为HH:MM格式。

数据看起来像这样

ID    Start       End
------------------------
1     00:00       06:00
2     06:00       16:00
3     16:00       18:00
4     18:00       24:00

我的查询是这样的:

SELECT
    a.start,
    a.[end],
    RIGHT('0' + CONVERT(VARCHAR(3), DATEDIFF(MINUTE, a.Start, a.[end]) / 60), 2) + ':' +
    RIGHT('0' + CONVERT(VARCHAR(2), DATEDIFF(MINUTE, a.Start, a.[end]) % 60), 2) AS TotalHours 
FROM
    TransactionActivity a

我使用基于ID号的where子句执行查询,它给我正确的结果,直到ID 4:我遇到这样的错误

  

从字符串转换日期和/或时间时转换失败。

我认为是因为“结束时间”值为24:00,如何才能获得时差?

1 个答案:

答案 0 :(得分:1)

我认为最好将它们转换为完整的日期时间(使用任意日期),因为这样日期函数才能正常工作。

None