微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何找到mysql表记录之间的时间间隔和间隔长度?

如何解决如何找到mysql表记录之间的时间间隔和间隔长度?

我的桌子是这样的:

id 时间
1 2021-07-17 17:44:26
2 2021-07-17 17:44:26
3 2021-07-17 17:44:26
4 2021-07-17 17:44:31
5 2021-07-17 17:44:31
6 2021-07-17 17:44:31
7 2021-07-17 17:44:36
8 2021-07-17 17:44:36
9 2021-07-17 17:44:36
10 2021-07-17 17:44:41
11 2021-07-17 17:44:41
12 2021-07-17 17:44:41
13 2021-07-17 17:44:51
14 2021-07-17 17:44:51
15 2021-07-17 17:44:51
16 2021-07-17 17:44:56
17 2021-07-17 17:44:56
18 2021-07-17 17:44:56
19 2021-07-17 17:45:02
20 2021-07-17 17:45:02
21 2021-07-17 17:45:02

我有 MysqL 8.0.21

总是接下来的 3 行有相同的时间,然后 beetwen 通常是 5 秒的时间间隔,如何找到所有超过 8 秒的间隔并计算间隔时间以获得类似的东西:

gap_id gap_time_start 间隙长度
1 2021-07-17 17:44:41 10

解决方法

如果您使用的是 MySQL 8+,您可以像这样使用 LEAD() 窗口函数:

select * from (
    SELECT id as gap_id,`time` as gap_start_time,timediff( lead(`time`) over W,`time`) as gap_length 
        from `myTable` window w as (order by `time` asc)
    ) T where T.gap_length > 5;

输出:

12,2021-07-17 17:44:41,00:00:10
18,2021-07-17 17:44:56,00:00:06

参考:LEAD()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。