sql >> Databasteknik >  >> RDS >> Oracle

Oracle:Beräkna tidsskillnaden i TT:MM:SS mellan 2 datum

Är datumen i varchar2 typ? Sedan kan du först konvertera det till tidsstämpelformat. Eftersom det också har tidszon, använd to_timestamp_tz-funktionen.

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

När datumen är i tidsstämpeltyp, subtraherar du dem kommer du att få skillnaden i intervalldag till andra typ.

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

Använd sedan extrahera för att hämta de enskilda komponenterna från intervallet.

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. Konvertera tidsstämpel till datum i MySQL-fråga

  2. Skrivskyddat Oracle Home

  3. Ansluter SAP Lumira till Microsoft Access

  4. Frågor att ställa innan du startar en databas