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

MariaDB中如何通过SEC_TO_TIME对两个时间秒数求和?

解决两个跨表秒数求和并转换为y/m/d hh:mm:ss格式的问题

你之前的问题在于两个求和操作是分开执行的独立查询,无法直接在另一个查询中引用这两个结果进行计算。必须将两个表的求和结果放到同一个查询上下文里,才能完成相加和格式转换。

以下是两种可行的实现方式:

方式1:使用子查询获取总秒数

SELECT 
    DATE_FORMAT(
        DATE_ADD('0000-00-00', INTERVAL total_seconds SECOND),
        '%Y/%m/%d %H:%i:%s'
    ) AS staffTimeTotal
FROM (
    -- 计算两个表的秒数总和
    SELECT 
        (SELECT SUM(tiStaffTimeBo) FROM table1) + 
        (SELECT SUM(tiStaffTime) FROM table2) AS total_seconds
) AS total_calculation;

方式2:使用交叉连接合并两个求和结果

SELECT 
    DATE_FORMAT(
        DATE_ADD('0000-00-00', INTERVAL (t1.sum_bo + t2.sum_staff) SECOND),
        '%Y/%m/%d %H:%i:%s'
    ) AS staffTimeTotal
FROM 
    (SELECT SUM(tiStaffTimeBo) AS sum_bo FROM table1) t1,
    (SELECT SUM(tiStaffTime) AS sum_staff FROM table2) t2;

补充说明:

  • DATE_ADD('0000-00-00', INTERVAL 总秒数 SECOND) 会自动处理天数、月份甚至年份的进位,直接输出标准的日期时间格式。
  • 如果你的需求是显示总天数而非年份(比如把100000秒显示为1/01/01 03:46:40),可以改用拼接方式:
SELECT 
    CONCAT(
        FLOOR(total_seconds / 86400), '/', -- 计算总天数
        DATE_FORMAT(SEC_TO_TIME(total_seconds % 86400), '%m/%d %H:%i:%s')
    ) AS staffTimeTotal
FROM (
    SELECT 
        (SELECT SUM(tiStaffTimeBo) FROM table1) + 
        (SELECT SUM(tiStaffTime) FROM table2) AS total_seconds
) AS total_calculation;

内容的提问来源于stack exchange,提问作者Marcello D'Ambrosio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:45:36