Sql 如何从hh:mm:ss中的时间数据类型列求和时间?
我有一个包含4列的SQL Server表(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
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)))