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

如何在DB2中实现类似MySQL TIMEDIFF的hh:mm:ss格式时间差查询

在DB2中实现和MySQL TIMEDIFF相同的效果

我明白你现在的问题——MySQL里用TIMEDIFF能轻松算出两个时间的间隔并返回HH:MM:SS格式(哪怕小时数超过24),但DB2里没有这个函数对吧?别担心,我们可以通过组合几个DB2自带的函数来实现完全一样的效果,下面是对应的查询语句:

SELECT 
    REQ_NO,
    Req_CloseDate,
    Req_WorkStartDate,
    CONCAT(
        FLOOR(TIMESTAMPDIFF(SECOND, Req_WorkStartDate, Req_CloseDate)/3600),
        ':',
        LPAD(FLOOR(MOD(TIMESTAMPDIFF(SECOND, Req_WorkStartDate, Req_CloseDate), 3600)/60), 2, '0'),
        ':',
        LPAD(MOD(TIMESTAMPDIFF(SECOND, Req_WorkStartDate, Req_CloseDate), 60), 2, '0')
    ) AS Duration
FROM Request_Master_Table 
WHERE REQ_NO = '10348';

给你拆解一下写法逻辑:

  • 首先用TIMESTAMPDIFF(SECOND, 开始时间, 结束时间)算出两个时间点之间的总秒数,这里要注意参数顺序是「单位,起始时间,结束时间」,和MySQL的TIMEDIFF刚好反过来,别搞混了。
  • 总秒数除以3600取整,得到累计的小时数(比如你例子里的47小时,超过24也能正确计算)。
  • 用总秒数对3600取模,得到剩下的秒数,再除以60取整就是分钟数,用LPAD补个前导零保证是两位格式。
  • 最后总秒数对60取模就是秒数,同样补零。
  • 用CONCAT把这三部分拼起来,就得到和MySQL一模一样的HH:MM:SS格式了。

这个写法在绝大多数DB2版本里都能正常运行,完全匹配你要的输出效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:47:27