繁体   English   中英

计算 mysql 中连续行之间的日期差异

[英]calculate date difference between consecutive rows in mysql

我在 mysql 中有一个包含列的表:

id, created_time, name

每行都有 id 和创建时的日期时间。 例如下面:

id     created_on              name
1      2020-12-03 13:15:09     john
2      2020-11-08 14:11:19     john
3      2020-10-06 14:11:19     john
4      2020-09-12 14:11:19     john

想要显示 2 行之间的差异大于 30 天的结果

预计 Output:-

id    created_on             name
2     2020-11-08 14:11:19    john
4     2020-09-12 14:11:19    john

我尝试使用以下查询但失败了,因为它显示了所有数据。

SELECT id
     , name
  FROM
     ( SELECT MIN(created_on) start_time
            , id
            , name 
         FROM table1 
        WHERE name = 'john'  
        GROUP  
           BY id
     ) start_action
  JOIN
     ( SELECT MAX(created_on) close_time 
            , id
            , name 
         FROM table1 
        WHERE name = 'john' 
        GROUP 
           BY id
     ) close_action
 USING (id,name)
 WHERE name = 'john'

我正在使用 Mysql 5.6 版本请求帮助

您可以在此处使用LEAD获得 MySQL 8+ 解决方案:

WITH cte AS (
    SELECT *, LEAD(created_time) OVER (ORDER BY id) lead_created_time,
              LAG(created_time) OVER (ORDER BY id) lag_created_time
    FROM yourTable
)

SELECT id, created_time
FROM cte
WHERE ABS(DATEDIFF(lead_created_time, created_time)) > 30 OR
      ABS(DATEDIFF(lag_created_time, created_time)) > 30;

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM