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

整数格式时间间隔分钟数计算问题:14300000与23000000

整数格式时间间隔分钟数计算问题

现有两个整数格式的时间值:开始时间14300000(对应14:30:00)、结束时间23000000(对应23:00:00),需要计算两者之间的总分钟数,期望结果为510,但使用以下SQL计算得到的结果是522:

Select Cast(((23000000-14300000)/1000000)*60 as Decimal(6,2)) Hours

问题原因

原SQL的逻辑错误在于将整数格式的时间当作纯十进制数值处理:

  • 计算差值23000000-14300000=8700000,除以1000000得到8.7,再乘以60得到522。
  • 但实际上14300000代表的是14小时30分钟,而非14.3小时;23000000代表23小时0分钟,而非23.0小时。直接按数值比例转换会混淆时间的60进制规则,导致结果错误。

正确计算方法

需要先将整数时间拆解为小时和分钟,转换为总分钟数后再求差值:

方法1:通过字符串拆分处理

SELECT 
    (
        -- 结束时间转总分钟数:23*60 + 0 = 1380
        (CAST(LEFT(CAST(23000000 AS VARCHAR), 2) AS INT)*60 + CAST(SUBSTRING(CAST(23000000 AS VARCHAR), 3, 2) AS INT))
        -
        -- 开始时间转总分钟数:14*60 +30 = 870
        (CAST(LEFT(CAST(14300000 AS VARCHAR), 2) AS INT)*60 + CAST(SUBSTRING(CAST(14300000 AS VARCHAR), 3, 2) AS INT))
    ) AS total_minutes;

方法2:通过数值运算处理(避免字符串转换)

SELECT 
    (
        -- 结束时间总分钟数
        ((23000000 / 1000000)*60 + (23000000 / 10000) % 100)
        -
        -- 开始时间总分钟数
        ((14300000 / 1000000)*60 + (14300000 / 10000) % 100)
    ) AS total_minutes;

两种方法都会得到正确结果510。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:30:54