我有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
首先 ,你的最终值应为48:22:19
,而不是48:54:46
。
其次 ,不能使用TIME
类型来接收所需的结果,因为对于元件范围hh
是两位数字,范围从0
到23
,表示小时( 更多信息 )。
又来了一个解决办法,如果一开始你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
我发现了更简单的方法来做到这一点..
SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))