sql >> データベース >  >> RDS >> Oracle

Oracle:2つの日付間のHH:MM:SSの時間差を計算します

    日付はvarchar2タイプですか?次に、最初にそれをタイムスタンプ形式に変換できます。タイムゾーンもあるので、to_timestamp_tz関数を使用してください。

    SQL> select to_timestamp_tz('Sun Dec 29 11:55:29 EST 2013','Dy Mon dd hh24:mi:ss TZR yyyy') from dual;
    
    TO_TIMESTAMP_TZ('SUNDEC2911:55:29EST2013','DYMONDDHH24:MI:SSTZRYYYY')
    ---------------------------------------------------------------------------
    29-DEC-13 11.55.29.000000000 AM EST
    

    日付がタイムスタンプタイプになったら、それらを減算すると、間隔の日と2番目のタイプの差が得られます。

    SQL> select   to_timestamp_tz ('Mon Dec 30 20:21:34 EST 2013','Dy Mon dd hh24:mi:ss TZR yyyy')
      2         - to_timestamp_tz ('Sun Dec 29 11:55:29 EST 2013','Dy Mon dd hh24:mi:ss TZR yyyy') from dual;
    
    TO_TIMESTAMP_TZ('MONDEC3020:21:34EST2013','DYMONDDHH24:MI:SSTZRYYYY')-TO_TI
    ---------------------------------------------------------------------------
    +000000001 08:26:05.000000000
    

    次に、extractを使用して、間隔から個々のコンポーネントを取得します。

    SQL> select extract(day from intrvl) as dd,
      2         extract(hour from intrvl) as hh24,
      3         extract(minute from intrvl) as mi,
      4         extract(second from intrvl) as ss
      5  from (
      6        select   to_timestamp_tz ('Mon Dec 30 20:21:34 EST 2013','Dy Mon dd hh24:mi:ss TZR yyyy')
      7               - to_timestamp_tz ('Sun Dec 29 11:55:29 EST 2013','Dy Mon dd hh24:mi:ss TZR yyyy') as intrvl
      8       from dual
      9       );
    
            DD       HH24         MI         SS
    ---------- ---------- ---------- ----------
             1          8         26          5
    


    1. MySQLのmy.cnfの場所を見つけるにはどうすればよいですか

    2. c#を使用して.SQLスクリプトファイルを実行する方法

    3. Access2016でテーブルからフォームを作成する方法

    4. PostgreSQL数学関数