需要使用oracle sql找到两个时间戳之间的差异

时间:2017-07-14 14:17:30

标签: sql oracle9i

SELECT MAX(
  CASE
    WHEN CLKTRANTYPE_ID = 1
    THEN MIN((TO_CHAR (CLKTRANPRO_TIME,'YYYY.MM.DD HH24:MI:SS')))
  END) AS MIN_TIME ,
  MAX(
  CASE
    WHEN CLKTRANTYPE_ID = 2
    THEN MAX((TO_CHAR(CLKTRANPRO_PROC_DT,'YYYY.MM.DD HH24:MI:SS')) )
  END) AS MAX_TIME 
FROM CLOCK_TRAN_PROCESSED
WHERE WRKS_ID =1652201
GROUP BY WRKS_ID,CLKTRANTYPE_ID;

以上是我的查询,我需要找到MAX_TIME和MIN_TIME之间的小时格式差异。我尝试使用提取和( - ),但没有任何工作对我来说。请帮我找出小时格式的差异。

2 个答案:

答案 0 :(得分:0)

为什么要将值转换为字符串以获得差异?

select (extract(day from max(CLKTRANPRO_PROC_DT) - min(CLKTRANPRO_TIME)) * 24 +
        extract(hour from max(CLKTRANPRO_PROC_DT) - min(CLKTRANPRO_TIME))
       ) as diff_hours

答案 1 :(得分:0)

小时差异

select 24 * (to_date('2017-07-07 22:00', 'YYYY-MM-DD hh24:mi') 
             - to_date('2017-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_in_hours 
       from dual;

以上查询的结果应为2.5小时

获得差异的简单方法

select Date1 - Date2 from your_Table;