如何从时间数据类型的列求和次HH:MM:SS?(How to sum times from Time

2019-10-21 16:48发布

我有4列(SQL Server表TIME(0)数据类型)。

每一行对应一个日子,所以我有:

Col Time 1 -------- Col Time 2 ------ Col Time 3

'03:23:12' -------- '21:33:04' ------ '07:44:11'
'21:14:45' -------- '12:43:44' ------ '01:56:43'
'15:22:36' -------- '19:33:55' ------ '04:03:11'
'08:21:46' -------- '01:23:14' ------ '06:09:11'

我想SUM每一列因此可以得到的总小时数,分钟和秒hh:mm:ss )。

因此,例如,对于Col Time 1我应该有:

48:54:46

Answer 1:

首先 ,你的最终值应为48:22:19 ,而不是48:54:46
其次 ,不能使用TIME类型来接收所需的结果,因为对于元件范围hh是两位数字,范围从023 ,表示小时( 更多信息 )。

又来了一个解决办法,如果一开始你SUM TIME的每个值转换,然后分别找小时,分钟和秒

SELECT CAST(t.time_sum/3600 AS VARCHAR(2)) + ':'
     + CAST(t.time_sum%3600/60 AS VARCHAR(2)) + ':'
     + CAST(((t.time_sum%3600)%60) AS VARCHAR(2))
FROM ( SELECT SUM(DATEDIFF(S, '00:00:00', col1)) AS time_sum
       FROM tbl) t

SQLFiddle



Answer 2:

我发现了更简单的方法来做到这一点..

SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))


文章来源: How to sum times from Time datatype columns in hh:mm:ss?