首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >记录之间的时间差

记录之间的时间差
EN

Stack Overflow用户
提问于 2010-11-30 06:13:52
回答 2查看 11.4K关注 0票数 5

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

有没有一种简单的方法来查看每条记录,以及该记录在前一条记录之后的分钟数?

谢谢,AndyDan

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-30 06:22:13

这是Oracle 9i+,它使用LAG function来获取之前的时间戳值,而不需要自连接:

代码语言:javascript
运行
复制
SELECT t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp) AS diff
  FROM YOUR_TABLE t

...but因为整数表示结果中的天数,所以小于24小时的差值将是一个分数。此外,如果没有更早的值,则LAG将返回NULL --就像使用了外部联接一样。

要查看分钟数,请使用ROUND函数:

代码语言:javascript
运行
复制
SELECT ROUND((t.timestamp - LAG(t.timestamp) OVER (ORDER BY t.timestamp)) *1440) AS diff_in_minutes
  FROM YOUR_TABLE t
票数 11
EN

Stack Overflow用户

发布于 2010-11-30 06:20:59

如果记录有连续的id,你可以像这样做一个自连接:

代码语言:javascript
运行
复制
SELECT t2.*, t2.timestamp - t1.timestamp AS timediff
FROM foo t1 inner join foo.t2 on t1.id = t2.id-1

您可能需要对此进行调整以处理第一条和最后一条记录,但这是最基本的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4308620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档