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

SQL中timestamp时间差转换为小时分钟格式的高效实现方法问询

Oracle时间间隔转小时分钟格式实现方案

你在SQL Developer中对两个Timestamp字段做减法得到的是INTERVAL DAY TO SECOND类型的时间间隔,以下两种方案都可以直接实现转换为总小时+分钟的格式,比手动累加的逻辑更简洁易读,执行效率没有差异:

方案1:转DATE类型直接计算(无需嵌套子查询)

DATE类型相减的结果单位为天,直接做算术运算即可得到总小时、分钟值:

SELECT 
  TRUNC((CAST(created_dt_1 AS DATE) - CAST(created_dt_2 AS DATE)) * 24) || '小时'
  || MOD(TRUNC((CAST(created_dt_1 AS DATE) - CAST(created_dt_2 AS DATE)) * 24 * 60), 60) || '分钟' 
  AS delivery_time_hm
FROM "ORDER";

注意:order是SQL保留关键字,作为表名使用时需要用双引号包裹避免语法报错。

方案2:基于INTERVAL结果直接提取(保留原有差值计算逻辑)

如果你已经封装好了时间间隔的计算逻辑,可以直接用EXTRACT函数提取各单位值拼接:

SELECT 
  (EXTRACT(DAY FROM delivery_time) * 24 + EXTRACT(HOUR FROM delivery_time)) || '小时'
  || EXTRACT(MINUTE FROM delivery_time) || '分钟' 
  AS delivery_time_hm
FROM (
  SELECT (created_dt_1 - created_dt_2) AS delivery_time
  FROM "ORDER"
);

你示例中的时间间隔+02 05:12:30.651000用以上两种方案转换后,结果均为53小时12分钟,符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:01