首页 > 解决方案 > 小时和分钟的时差

问题描述

我试图找出小时和分钟的时差,但出现错误,请帮助找出查询,例如我需要在 oracle 16:55- 14:00 = 2:55 中的以下答案

标签: oracle

解决方案


将时间转换为DATETIMESTAMP然后从另一个中减去一个以获得INTERVAL DAY TO SECOND数据类型;然后用于EXTRACT获取小时和分钟组件并对其进行格式化:

SELECT start_time,
       end_time,
       TO_CHAR( EXTRACT( HOUR FROM difference ), 'FM00' )
         || ':'
         || TO_CHAR( ABS( EXTRACT( MINUTE FROM DIFFERENCE ) ), 'FM00' )
         AS difference
FROM   (
  SELECT start_time,
         end_time,
         ( TO_DATE( end_time, 'HH24:MI' ) - TO_DATE( start_time, 'HH24:MI' ) ) DAY TO SECOND
           AS difference
  FROM   test_data
)

其中,对于测试数据:

CREATE TABLE test_data ( start_time, end_time ) AS
  SELECT '14:00', '16:55' FROM DUAL UNION ALL
  SELECT '14:50', '15:23' FROM DUAL UNION ALL
  SELECT '16:00', '14:00' FROM DUAL UNION ALL
  SELECT '16:00', '14:20' FROM DUAL UNION ALL
  SELECT '00:00', '23:59' FROM DUAL;

输出:

START_TIME | END_TIME | 区别
:--------- | :------- | :---------
14:00 | 16:55 | 02:55     
14:50 | 15:23 | 00:33     
16:00 | 14:00 | -02:00    
16:00 | 14:20 | -01:40    
00:00 | 23:59 | 23:59     

db<>在这里摆弄


推荐阅读