gpt4 book ai didi

SQL Server - 总和时间显示问题

转载 作者:行者123 更新时间:2023-12-04 14:02:35 28 4
gpt4 key购买 nike

我发现了以下关于堆栈溢出的公式,它帮助我总结了时间值,稍微调整后效果很好:

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

您会注意到,我的数据不包含秒,因此我将其作为字符串添加到末尾。它的 session 记录似乎给我带来了麻烦。

问题:有没有办法调整上面的 forumla 以便我可以将总数显示为 HH:MM:SS -> 32:00:00

注意:当分钟字段返回 0 或值小于 10 时会发生这种情况...

提前感谢您的帮助。我正在使用 SQL Server 2016 数据中心,并将数据作为 varchar 存储在我的表中,格式为 HH:MM,称为 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

最佳答案

您可以使用:

RIGHT('000' + CAST (t.time_sum%3600/60 AS VARCHAR(2)), 2)

这将采用连接“000”和计算分钟的最右边的 2 个字符。因此,如果您的分钟数少于 10,则在前面添加一个 0。导致 01 - 60。我总是使用比我需要的更多的 0,只是因为这无关紧要,而且我总是安全的。

关于SQL Server - 总和时间显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41380246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com