Oracle
 sql >> Base de données >  >> RDS >> Oracle

Différence de temps entre les enregistrements

Il s'agit d'Oracle 9i+, utilisant la fonction LAG pour obtenir la valeur d'horodatage précédente sans avoir besoin de s'auto-joindre :

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

...mais parce que les nombres entiers représentent le nombre de jours dans le résultat, une différence de moins de 24 heures sera une fraction. De plus, le LAG renverra NULL s'il n'y a pas de valeur antérieure - comme s'il avait utilisé un OUTER JOIN.

Pour voir les minutes, utilisez la fonction ARRONDI :

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