2017-07-14 48 views
0
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之間的差別找到分,兩輛時間戳之間的差異。我嘗試使用提取和( - ),但沒有爲我工作。請幫我找出小時格式的區別。需要使用Oracle SQL

+1

沒有邏輯,以獲得差異.. ..除了獲得最大和最小。 – Prathyush

回答

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 
+0

SELECT提取物(HOUR從(MAX( CASE WHEN CLKTRANTYPE_ID = 2 THEN MAX((CLKTRANPRO_PROC_DT)) END) - MAX( CASE WHEN CLKTRANTYPE_ID = 1 THEN MIN(CLKTRANPRO_TIME) END)))DIFF FROM CLOCK_TRAN_PROCESSED WHERE WRKS_ID = 1652201 GROUP BY WRKS_ID,CLKTRANTYPE_ID; – Priyu

+0

使用上面的代碼得到「ORA-30076:提取源的無效提取字段」錯誤 – Priyu

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;