首页 > 数据库 > mysql教程 > 如何计算SQL表中连续行之间的时间差?

如何计算SQL表中连续行之间的时间差?

Mary-Kate Olsen
发布: 2024-11-15 12:55:03
原创
361 人浏览过

How to Calculate Time Difference Between Consecutive Rows in a SQL Table?

计算连续行之间的时间差

任务是确定包含 StartDate 列的表中连续记录之间的时间差。为了实现这一点,我们可以利用自联接并将每个记录与其表中的后续记录进行比较。

使用自联接:

比较连续的记录记录,我们可以在表上使用自连接。下面是一个示例查询:

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
INNER JOIN MyTable B ON B.requestid = (A.requestid + 1)
ORDER BY A.requestid ASC;
登录后复制

此查询创建一个连接表,其中每条记录 (A) 与其下一条记录 (B) 配对。计算列 timedifference 给出了两条记录之间的时间差。

处理非连续请求 ID:

如果请求 id 不连续,我们可以使用CROSS JOIN 和附加过滤,将每条记录与其直接后继记录相匹配。

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN(C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC;
登录后复制

此查询确保每个记录与其直接后继记录匹配,即使请求 ID 不连续也是如此。

示例数据:

考虑由作者:

requestId startdate
1 2011-10-16 13:15:56
2 2011-10-16 13:15:59
3 2011-10-16 13:15:59
4 2011-10-16 13:16:02
5 2011-10-16 13:18:07

输出:

将上述查询应用于示例数据将产生以下输出:

requestId startdate timedifference
1 2011-10-16 13:15:56 NULL
2 2011-10-16 13:15:59 00:00:03
3 2011-10-16 13:15:59 00:00:00
4 2011-10-16 13:16:02 00:00:03
5 2011-10-16 13:18:07 00:02:05

以上是如何计算SQL表中连续行之间的时间差?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板