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

如何查询分钟级时间差?现有SQL查询计算结果不符预期

问题分析

你当前的写法错误在于:STRFTIME("%H%M")返回的是类似1030这样的十进制数字,直接相减是按100进制计算,而时间是60进制,所以结果不符合预期。比如10:30 - 08:17,用你的方法算出来是1030-817=213,但实际分钟差是(10*60+30)-(8*60+17)=133。

正确解决方案

方法1:用Unix时间戳计算(支持跨天/带日期的时间)

将时间转换为Unix时间戳(秒数),相减后除以60得到分钟差,这是最稳妥的方式,即使时间跨天也能正确计算:

SELECT arrival_time, discharge_time
    ,(STRFTIME("%s", discharge_time) - STRFTIME("%s", arrival_time)) / 60 AS time_delta
FROM table;

方法2:拆分小时和分钟计算(仅适用于同一天的时间)

分别提取小时和分钟,转换为总分钟数后再相减:

SELECT arrival_time, discharge_time
    ,(STRFTIME("%H", discharge_time)*60 + STRFTIME("%M", discharge_time)) 
    - (STRFTIME("%H", arrival_time)*60 + STRFTIME("%M", arrival_time)) AS time_delta
FROM table;

注意:如果你的时间字段包含日期信息,或者存在跨天的情况,优先使用方法1,避免出现负数或错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:01:18