我在stackoverflow上找到了以下公式,它帮助我计算时间值。经过微调后,它非常好用:
SELECT CAST(t.TotalHours/3600 AS VARCHAR(2)) + ':'
+ CAST(t.TotalHours%3600/60 AS VARCHAR(2)) + ':00'
FROM ( SELECT SUM(DATEDIFF(S, '00:00', WorkingHours)) AS TotalHours
FROM workhour) t
然而,我现在在格式方面遇到了问题。当我在我的数据上运行此查询时,它以这种格式返回时间总和:HH:M:SS (32:0:00)
我的数据:
WorkingHours
05:30
06:00
05:30
08:00
07:00
期望输出:
TotalHours
32:00:00
正如您所注意到的,我的数据不包括秒,因此我已将其作为字符串添加到末尾。问题似乎出在分钟上。
问题:是否有一种方法可以调整上述公式,以便我可以将总数显示为HH:MM:SS -> 32:00:00?
注意:当分钟字段返回0或小于10的值时会发生这种情况...
谢谢您提前的帮助。我正在使用SQL Server 2016 Data Center,在名为WorkingHours的varchar格式中存储数据。
SELECT CAST(t.TotalHours/3600 AS VARCHAR(2)) + ':' +
RIGHT('000' + CAST (t.TotalHours%3600/60 AS VARCHAR(2)), 2) + ':00'
FROM ( SELECT SUM(DATEDIFF(S, '00:00', TotalHours)) AS TotalHours
FROM workhour) t