sql >> Base de Datos >  >> RDS >> Oracle

Diferencia de tiempo entre registros

Esto es Oracle 9i+, usando la función LAG para obtener el valor de marca de tiempo anterior sin necesidad de unirse:

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

...pero debido a que los números enteros representan la cantidad de días en el resultado, una diferencia de menos de 24 horas será una fracción. Además, el LAG devolverá NULL si no hay un valor anterior, lo mismo que si hubiera usado un OUTER JOIN.

Para ver los minutos, use la función ROUND:

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