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

如何在SQL中对字符串类型的时长数据求和?

当然有办法解决这个问题!针对这种HH:MM:SS格式的字符串型工作时长求和,不同工具的实现思路各有侧重,我给你整理了几个常见场景的具体方案:

1. Python 处理(适合数据预处理/分析场景)

咱们可以利用Python的datetime模块,把每个时长字符串转换成时间差对象(timedelta),然后直接累加求和,最后格式化输出结果:

from datetime import timedelta

# 模拟你的数据集
working_hours = ["0:00:11", "0:00:08", "0:00:01", "0:00:29", "0:01:25", "0:00:06", "0:00:12", "0:00:26", "0:00:01", "0:01:41", "0:00:01"]

total_duration = timedelta()
for time_str in working_hours:
    # 拆分时分秒并转成整数
    hours, minutes, seconds = map(int, time_str.split(':'))
    # 累加时间差
    total_duration += timedelta(hours=hours, minutes=minutes, seconds=seconds)

print(f"总工作时长:{total_duration}")

运行这段代码后,会输出总时长0:04:42,正好是所有时长的总和。

2. SQL 数据库直接计算

如果你的数据存在数据库里,可以直接用SQL函数来处理,不同数据库的语法略有差异:

MySQL

使用TIME_TO_SEC()把时长转成秒数求和,再用SEC_TO_TIME()转回到时间格式:

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Working_hours))) AS total_working_hours
FROM your_table;

PostgreSQL

PostgreSQL支持直接将HH:MM:SS字符串转为INTERVAL类型,然后直接求和:

SELECT SUM(Working_hours::INTERVAL) AS total_working_hours
FROM your_table;

也可以用CAST(Working_hours AS INTERVAL)替代::INTERVAL,效果完全一致。

SQL Server

通过计算每个时长与00:00:00的秒差求和,再转回到时间格式:

SELECT 
    DATEADD(SECOND, SUM(DATEDIFF(SECOND, '00:00:00', Working_hours)), '00:00:00') AS total_working_hours
FROM your_table;
3. Excel 办公场景处理

如果是Excel表格中的数据,可以结合TIMEVALUE()和SUM()函数来计算:
在空白单元格中输入公式:

=TEXT(SUM(TIMEVALUE(A2:A12)), "[h]:mm:ss")
  • TIMEVALUE():把字符串型时长转为可计算的时间值
  • SUM():对所有时间值求和
  • TEXT():用[h]格式确保超过24小时的时长能正确显示小时数(如果总时长不会超过24小时,也可以用"hh:mm:ss")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:20:22