首页 > 解决方案 > SQL计算一行和下一行之间的时间

问题描述

我有一张桌子点击

click_id int
created datetime

示例数据

1 2021-03-01 12:15:17
2 2021-03-01 12:15:21
3 2021-03-01 12:17:21
4 2021-03-01 13:17:59

我想选择所有点击,包括它与之后最快点击之间的时间差(以秒为单位)

需要的结果:

1 - 2021-03-01 12:15:17 - 4
2 - 2021-03-01 12:15:21 - 120
3 - 2021-03-01 12:17:21 - 3602
4 - 2021-03-01 13:17:23 - null

这可以使用 MySQL 实现吗?

标签: mysql

解决方案


在 MySQL 8+ 上,我们可以使用LEADwith TIMESTAMPDIFF

SELECT
    click_id,
    created,
    TIMESTAMPDIFF(SECOND, created, LEAD(created) OVER (ORDER BY created)) AS diff_sec
FROM yourTable
ORDER BY created;

推荐阅读