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

SQL/AS400数据库HH.MM.SS格式工作时长SUM求和方法咨询

AS400/通用SQL环境HH.MM.SS格式时长求和方案

核心逻辑

working_hours为字符串格式的时分秒标识,直接使用SUM函数会按数值或字符串规则聚合,无法得到正确的时长总和:

  • 第一步:拆分每条记录的时、分、秒,换算为总秒数后求和
  • 第二步:将求和后的总秒数反向格式化为HH.MM.SS格式,补全前导零

AS400(DB2 for i)实现代码

SELECT 
    -- 拼接HH.MM.SS格式,不足两位补前导零
    LPAD(TRIM(CHAR(INT(total_seconds / 3600))), 2, '0') 
    || '.' 
    || LPAD(TRIM(CHAR(INT(MOD(total_seconds, 3600) / 60))), 2, '0')
    || '.' 
    || LPAD(TRIM(CHAR(MOD(MOD(total_seconds, 3600), 60))), 2, '0') AS total_working_hours
FROM (
    -- 计算所有时长的总秒数和
    SELECT SUM(
        INT(SUBSTR(working_hours, 1, 2)) * 3600 
        + INT(SUBSTR(working_hours, 4, 2)) * 60 
        + INT(SUBSTR(working_hours, 7, 2))
    ) AS total_seconds
    FROM Attendance
    -- 如需按员工分组求和,可取消注释下行
    -- GROUP BY empcode
) AS temp_sum

通用SQL适配说明

其他数据库环境仅需调整对应函数名即可,逻辑完全一致:

  • MySQL:替换CHAR()为CAST(xxx AS CHAR),其余函数LPAD、SUBSTR、MOD均通用
  • Oracle:替换TRIM(CHAR(xxx))为TO_CHAR(xxx),其余函数通用
  • SQL Server:替换LPAD为RIGHT('0'+CAST(xxx AS VARCHAR),2),MOD替换为%取模运算符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:39:03