Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Berechnung der Differenz zwischen zwei Zeitstempeln in Oracle in Millisekunden

Wenn Sie zwei Variablen vom Typ TIMESTAMP subtrahieren , erhalten Sie ein INTERVAL DAY TO SECOND die je nach Plattform eine Anzahl von Millisekunden und/oder Mikrosekunden umfasst. Wenn die Datenbank unter Windows ausgeführt wird, systimestamp hat im Allgemeinen Millisekunden. Wenn die Datenbank unter Unix läuft, systimestamp hat im Allgemeinen Mikrosekunden.

  1  select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' )
  2*   from dual
SQL> /

SYSTIMESTAMP-TO_TIMESTAMP('2012-07-23','YYYY-MM-DD')
---------------------------------------------------------------------------
+000000000 14:51:04.339000000

Sie können den EXTRACT verwenden Funktion zum Extrahieren der einzelnen Elemente eines INTERVAL DAY TO SECOND

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff ) days,
  2         extract( hour from diff ) hours,
  3         extract( minute from diff ) minutes,
  4         extract( second from diff ) seconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

      DAYS      HOURS    MINUTES    SECONDS
---------- ---------- ---------- ----------
         0         14         55     37.936

Sie können dann jede dieser Komponenten in Millisekunden umwandeln und sie addieren

SQL> ed
Wrote file afiedt.buf

  1  select extract( day from diff )*24*60*60*1000 +
  2         extract( hour from diff )*60*60*1000 +
  3         extract( minute from diff )*60*1000 +
  4         round(extract( second from diff )*1000) total_milliseconds
  5    from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
  6*           from dual)
SQL> /

TOTAL_MILLISECONDS
------------------
          53831842

Normalerweise ist es jedoch sinnvoller, entweder das INTERVAL DAY TO SECOND zu haben Darstellung oder separate Spalten für Stunden, Minuten, Sekunden usw. zu haben, anstatt die Gesamtzahl der Millisekunden zwischen zwei TIMESTAMP zu berechnen Werte.