sql >> Database teknologi >  >> RDS >> Oracle

Oracle:Beregn tidsforskel i TT:MM:SS mellem 2 datoer

Er datoerne af typen varchar2? Derefter kan du først konvertere det til tidsstempelformat. Da det også har tidszone, skal du bruge 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 datoerne er i tidsstemplet, vil det give dig forskellen i intervaldag til anden type, hvis du trækker dem fra.

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

Brug derefter udtræk til at få de enkelte komponenter fra 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. Konverter 'smalldatetime' til 'time' i SQL Server (T-SQL-eksempler)

  2. Konverter 'datetime' til 'date' i SQL Server (T-SQL-eksempler)

  3. Sådan sletter du hele MySQL-databasen

  4. PL/pgSQL kolonnenavn er det samme som variabel