Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Diferença de tempo entre registros


Este é o Oracle 9i+, usando a função LAG para obter o valor do carimbo de data/hora anterior sem precisar se associar:
SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
  FROM YOUR_TABLE t

...mas como os números inteiros representam o número de dias no resultado, uma diferença de menos de 24 horas será uma fração. Além disso, o LAG retornará NULL se não houver valor anterior - o mesmo que se tivesse usado um OUTER JOIN.

Para ver os minutos, use a função ROUND:
SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
  FROM YOUR_TABLE t