Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:Oblicz różnicę czasu w GG:MM:SS między 2 datami

Czy daty są typu varchar2? Następnie możesz najpierw przekonwertować go na format znacznika czasu. Ponieważ ma również strefę czasową, użyj funkcji 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

Gdy daty są w formacie znacznika czasu, odjęcie ich da różnicę między dniem a drugim typem.

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

Następnie użyj wyciągu, aby uzyskać poszczególne składniki z przedziału.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Jak sprawdzić, czy istnieje oczekująca transakcja?

  2. praca z json w Oracle

  3. Liczba wierszy Oracle w tabeli według liczby (*) vs NUM_ROWS z DBA_TABLES

  4. SQL:Uzyskaj rekordy utworzone w przedziale czasowym dla określonych dat

  5. Zabawne podzapytanie Oracle