记录之间的时间差异

And*_*Dan 5 sql oracle date-arithmetic

我有一个表(其中包括)时间戳列(名为timestamp;它是标准的Oracle DATE数据类型).记录大约相隔4-11分钟,每小时大约7或8条记录,我正在尝试确定它们是否有任何模式.

是否有一种简单的方法可以查看每条记录,以及记录在上一条记录之后发生的分钟数?

谢谢,AndyDan

OMG*_*ies 10

这是Oracle 9i +,使用LAG函数获取以前的时间戳值而无需自联接:

SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
  FROM YOUR_TABLE t
Run Code Online (Sandbox Code Playgroud)

...但由于整数表示结果中的天数,因此小于24小时的差异将是一小部分.此外,如果没有较早的值,LAG将返回NULL - 与使用OUTER JOIN时相同.

要查看分钟,请使用ROUND功能:

SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
  FROM YOUR_TABLE t
Run Code Online (Sandbox Code Playgroud)