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

SQL Server将十进制值转换为超24小时的hh:mm总时长实现方法

SQL Server 累计时长转换实现方案

问题原因

原来的代码用Time类型存储转换结果,Time类型设计为存储单日时间点,最大值为23:59:59.9999999,超过24小时的时长会自动取模截断,因此会出现27小时输出为03:34的问题。

方案1:输出总小时:分钟累计格式

假设你的十进制列存储的是分钟为单位的时长数值,实现代码如下:

-- 示例数值1654.86分钟,对应27小时34分钟
SELECT CONCAT(
    CAST(FLOOR(你的时长列 / 60) AS VARCHAR(10)),
    ':',
    RIGHT('0' + CAST(CAST(FLOOR(你的时长列) AS INT) % 60 AS VARCHAR(2)), 2)
) AS 累计时长
FROM 你的表名

如果你的时长列存储的是秒为单位的数值,将计算逻辑改为FLOOR(你的时长列 / 3600)取总小时,FLOOR(你的时长列 / 60) % 60取分钟即可。

方案2:输出工作日+剩余时长格式

默认按1个工作日=8小时计算,可根据业务需求调整除数修改工作日时长标准:

SELECT 
    CONCAT(
        FLOOR(FLOOR(你的时长列 /60)/8),
        '个工作日加',
        RIGHT('0' + CAST(FLOOR(你的时长列 /60) %8 AS VARCHAR(2)),2),
        ':',
        RIGHT('0' + CAST(CAST(FLOOR(你的时长列) AS INT) %60 AS VARCHAR(2)),2)
    ) AS 工作日时长
FROM 你的表名

拿示例数值1654.86分钟测试,输出结果为3个工作日加03:34,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:08