2017-07-14 9 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; 

を使用して時間内の2つのタイムスタンプの違いを見つける必要があります。私は抽出物と( - )を使ってみましたが、私のために働いていません。時間形式の違いを見つけるのを手伝ってください。は、上記の私のクエリがあると私は時間形式でMAX_TIMEとMIN_TIMEの違いを見つける必要があるのOracle SQLに

+1

を得るために2.5時間

簡単な方法であるべき差異を得るために何のロジックがありません。.. .. MaxとMinを得る以外に。 – 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 CLKTRANTYPE_ID = 2 THEN MAX((CLKTRANPRO_PROC_DT)) END) - MAX( CASE 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; 

上記のクエリの結果は違い

select Date1 - Date2 from your_Table; 
関連する問題