sql >> Databáze >  >> RDS >> Oracle

Oracle:Vypočítejte časový rozdíl v HH:MM:SS mezi 2 daty

Jsou data v typu varchar2? Poté jej můžete nejprve převést do formátu časového razítka. Protože má také časové pásmo, použijte funkci 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

Jakmile jsou data v typu časové razítko, jejich odečtením získáte rozdíl mezi dnem a druhým typem intervalu.

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

Poté pomocí extraktu získáte jednotlivé složky z intervalu.

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. Použití OASIS-SVN a git pro řízení zdrojového kódu Access

  2. Jak zjistím, jaká znaková sada je databáze / tabulka / sloupec MySQL?

  3. Co je nového v MariaDB MaxScale 2.4

  4. Použití korelační funkce PostgreSQL