Sql 如何从hh:mm:ss中的时间数据类型列求和时间?

Sql 如何从hh:mm:ss中的时间数据类型列求和时间?,sql,sql-server,time,sum,Sql,Sql Server,Time,Sum,我有一个包含4列的SQL Server表(TIME(0)datatype) 每行对应一天,因此我有: 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' '0

我有一个包含4列的SQL Server表(
TIME(0)
datatype)

每行对应一天,因此我有:

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'
我想对每一列进行求和,这样我就可以得到总的时、分、秒(
hh:mm:ss

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

48:54:46
首先,您的最终值应该是
48:22:19
,而不是
48:54:46

其次,您不能使用
TIME
类型来接收所需的结果,因为
hh
的元素范围是两位数字,范围从
0
23
,表示小时()

这里有一个解决方法,首先将每个值转换为秒,然后分别计算小时、分钟和秒:


我发现做这件事要容易得多

SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))

也许你应该考虑重构数据库,我不相信这是一个非常好的设计…你没有存储<代码>时间<代码>你显然是在存储一个持续时间。您应该为此使用
间隔
数据类型。如果SQL Server支持(对此不确定)。如果不是,您可能应该将持续时间存储为表示持续时间(以秒为单位)的单个值,而不是不是不是持续时间的
time
。问题已标记为SQL Server。
SEC_TO_TIME(SUM(TIME_TO_SEC(column_name)))