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

SQL中如何计算两个datetime类型列的时间差值

datetime类型时间差计算说明

  • 直接用original_due_date - due_date的写法不是所有数据库都兼容:PostgreSQL、Oracle等数据库支持datetime类型直接做减法,返回的时间间隔结果会自带天、时、分、秒信息,和你期望的输出格式一致,可以直接使用。
  • 如果你使用的是MySQL、SQL Server这类不支持datetime直接减法返回时间间隔的数据库,需要调用对应内置函数实现需求:
    • MySQL场景:如果只需要时分秒差值直接用TIMEDIFF(original_due_date, due_date)即可;如果要包含天数的完整格式,可使用如下写法:
      SELECT 
          *,
          CONCAT(
              TIMESTAMPDIFF(DAY, due_date, original_due_date), '天 ',
              TIMEDIFF(original_due_date, DATE_ADD(due_date, INTERVAL TIMESTAMPDIFF(DAY, due_date, original_due_date) DAY))
          ) AS difference
      FROM `Table`
      
    • SQL Server场景:可使用DATEDIFF配合日期部分提取实现:
      SELECT 
          *,
          CONCAT(
              DATEDIFF(DAY, due_date, original_due_date), '天 ',
              DATEPART(HOUR, original_due_date - due_date), ':',
              RIGHT('0' + CAST(DATEPART(MINUTE, original_due_date - due_date) AS VARCHAR), 2), ':',
              RIGHT('0' + CAST(DATEPART(SECOND, original_due_date - due_date) AS VARCHAR), 2)
          ) AS difference
      FROM [Table]
      
  • 如果你需要的是纯数值类型的差值(比如相差总秒数、总小时数),可直接将时间差转换为对应单位:
    例如计算总小时数:PostgreSQL用EXTRACT(EPOCH FROM (original_due_date - due_date))/3600,MySQL用TIMESTAMPDIFF(HOUR, due_date, original_due_date)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:30:03