You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server低兼容级别下如何对两列时间值的时分秒求和

低兼容级别SQL Server两时间字段求和方案

核心思路:无需拆分字符串,直接通过时间函数计算两个时间的总秒数之和,再格式化输出,兼容SQL Server 2008及以上版本,无需修改数据库兼容级别。


情况1:newTime、oldTime为time类型字段

直接通过时间差值计算总秒数求和即可:

SELECT 
    CONVERT(varchar, DATEADD(SECOND, 
        DATEDIFF(SECOND, '00:00:00', newTime) + DATEDIFF(SECOND, '00:00:00', oldTime), 
    '00:00:00'), 108) AS 总时长
FROM 你的表名

逻辑说明:DATEDIFF(SECOND, '00:00:00', 时间字段)会计算该时间距离零点的总秒数,两个秒数相加后用DATEADD回写到零点时间上,再转成108格式的时间字符串,即可得到hh:mm:ss格式的总时长,你的示例数据计算后会直接返回07:15:08。


情况2:newTime、oldTime为varchar类型存储的时间字符串

先转成time类型再计算即可:

SELECT 
    CONVERT(varchar, DATEADD(SECOND, 
        DATEDIFF(SECOND, '00:00:00', CONVERT(time, newTime)) + DATEDIFF(SECOND, '00:00:00', CONVERT(time, oldTime)), 
    '00:00:00'), 108) AS 总时长
FROM 你的表名

特殊场景:总时长超过24小时的处理

上述写法会自动截断24小时以上的部分,如果需要保留超过24小时的时长,可以手动拼接格式化:

SELECT 
    CAST(总秒数/3600 AS VARCHAR) + ':' + 
    RIGHT('0' + CAST((总秒数%3600)/60 AS VARCHAR),2) + ':' + 
    RIGHT('0' + CAST(总秒数%60 AS VARCHAR),2) AS 总时长
FROM (
    SELECT 
        DATEDIFF(SECOND, '00:00:00', newTime) + DATEDIFF(SECOND, '00:00:00', oldTime) AS 总秒数
    FROM 你的表名
) t

该写法支持展示超过24小时的时长,比如26小时3分5秒会返回26:03:05。

内容的提问来源于stack exchange,提问作者user12366709

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:27:04