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

Zeitunterschied zwischen Aufzeichnungen

Dies ist Oracle 9i+, das die LAG-Funktion verwendet um den vorherigen Zeitstempelwert zu erhalten, ohne sich selbst beitreten zu müssen:

SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
  FROM YOUR_TABLE t

... aber da ganze Zahlen die Anzahl der Tage im Ergebnis darstellen, ist ein Unterschied von weniger als 24 Stunden ein Bruchteil. Außerdem gibt die LAG NULL zurück, wenn es keinen früheren Wert gibt – genauso wie bei Verwendung eines OUTER JOIN.

Um die Minuten anzuzeigen, verwenden Sie die ROUND-Funktion:

SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
  FROM YOUR_TABLE t