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

SQL实现微秒级时长转换为DD:HH:MM:SS或累计小时格式

解决方案

原语句的核心问题是依赖DATETIME类型的时间格式转换,而DATETIME的时间部分最大仅支持23小时,超过24小时的部分会自动进位到日期字段,因此转换时会丢失超出的时长。以下是两种需求的实现方案:

方案1:输出DD:HH:MM:SS带天数格式

直接基于微秒计算总秒数后拆分各时间单位,自动补前导零:

SELECT 
    CONCAT(
        RIGHT('0' + CAST(duration / 1000000 / 86400 AS VARCHAR(10)), 2), ':',
        RIGHT('0' + CAST((duration / 1000000 % 86400) / 3600 AS VARCHAR(2)), 2), ':',
        RIGHT('0' + CAST((duration / 1000000 % 3600) / 60 AS VARCHAR(2)), 2), ':',
        RIGHT('0' + CAST(duration / 1000000 % 60 AS VARCHAR(2)), 2)
    ) AS [DD:HH:MM:SS]
FROM 你的表名

方案2:输出小时不封顶的HH:MM:SS格式

不做天数拆分,直接累计总小时数:

SELECT 
    CONCAT(
        CAST(duration / 1000000 / 3600 AS VARCHAR(10)), ':',
        RIGHT('0' + CAST((duration / 1000000 % 3600) / 60 AS VARCHAR(2)), 2), ':',
        RIGHT('0' + CAST(duration / 1000000 % 60 AS VARCHAR(2)), 2)
    ) AS [HH:MM:SS]
FROM 你的表名

如果需要保留秒的小数部分,只需把微秒除以1000取余数,拼接到秒的字段后即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:06:03