如何从 hh:mm:ss 中的时间数据类型列求和时间?
How to sum times from Time datatype columns in hh:mm:ss?
我有一个 SQL 服务器 table 有 4 列(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
,表示小时(More information)。
这里有一个解决方法,首先您 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
我找到了更简单的方法..
SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))
我有一个 SQL 服务器 table 有 4 列(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
,表示小时(More information)。
这里有一个解决方法,首先您 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
我找到了更简单的方法..
SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))