これは、LAG関数 を使用するOracle9i+です。 自己参加せずに以前のタイムスタンプ値を取得するには:
SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
FROM YOUR_TABLE t
...ただし、整数は結果の日数を表すため、24時間未満の差はわずかです。また、以前の値がない場合、LAGはNULLを返します。これは、OUTERJOINを使用した場合と同じです。
分を表示するには、ROUND関数を使用します:
SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
FROM YOUR_TABLE t