【发布时间】:2016-12-29 12:58:40
【问题描述】:
我发现了以下关于堆栈溢出的公式,它帮助我总结了时间值,稍微调整后效果很好:
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
来自SQL How to sum times from Time datatype columns in hh:mm:ss
但是我现在在格式方面遇到了问题。当我对我的数据运行此查询时,它会以这种格式返回时间总和: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,并将数据以 HH:MM 格式的 varchar 形式存储在我的表中,称为 WorkingHours。
工作答案:
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
【问题讨论】:
-
你能展示你的原始数据和预期输出吗
-
有条不紊。分别获取小时、分钟和秒,然后将它们连接起来。
-
我的数据是我表中的原始数据,下面已经添加了预期的输出
-
@DanBracuk 谢谢你的建议,我试试看
-
求和时间值?这毫无意义……七点半加上十一点一刻是多少?
标签: sql sql-server