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

如何对多个time(7)类型列求和并更新TotalDuration列?

解决方案:计算并更新TIME类型列的总时长

在SQL Server中,直接对TIME(7)类型的列做加法运算会受限于该类型的范围(最大值为23:59:59.9999999),超过24小时的总和会报错或自动取模。正确的处理方式是先将每个TIME值转换为可求和的数值,计算总和后再转回TIME类型。

更新语句

假设你的表名为YourTableName,执行以下语句即可更新TotalDuration列:

UPDATE YourTableName
SET TotalDuration = CAST(
    DATEADD(SECOND, 
        DATEDIFF(SECOND, 0, Duration1) +
        DATEDIFF(SECOND, 0, Duration2) +
        DATEDIFF(SECOND, 0, Duration3) +
        DATEDIFF(SECOND, 0, Duration4), 
        0
    ) AS TIME(7)
)

代码说明

  1. DATEDIFF(SECOND, 0, DurationX):把每个TIME(7)值转换为从00:00:00开始计算的总秒数,将时间值转为可直接相加的数值。
  2. 对四个列的总秒数求和,得到所有时长的总秒数。
  3. DATEADD(SECOND, 总秒数, 0):将总秒数转换回DATETIME类型,再通过CAST转为TIME(7)类型,得到最终的总时长。

注意事项

如果四个时长的总和超过24小时,TIME类型会自动对24取模(例如25小时会显示为01:00:00.0000000)。若需要保留超过24小时的完整时长(如显示25:30:00),则不能使用TIME类型存储总时长,建议改用DATETIME类型,或拆分存储天数、小时数等单独列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:20:26