查找mysql日期时间序列中的差距

the*_*ect 5 mysql sql timestamp join

我有myTabletimestampthe_dates(这是一个unique指数),并且每个值应该五分钟来分离。

例如:

the_dates
2014-03-13 17:30:00
2014-03-13 17:35:00
2014-03-13 17:40:00
2014-03-13 17:45:00
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 mysql 来检测“丢失”的行?例如,如果下一个值是:

2014-03-13 17:55:00
Run Code Online (Sandbox Code Playgroud)

然后myTable会丢失:

2014-03-13 17:50:00
Run Code Online (Sandbox Code Playgroud)

__

我正在考虑使用UNIX_TIMESTAMP和检测大于 300 秒的间隙,也许使用某种INNER JOINjoin表本身,但我太新手了,无法单独解决这个问题。

有任何想法吗?

AgR*_*zzo 5

你可以试试这个。返回的每条记录的时间范围应超过 5 分钟。对于您的示例,它应该已经返回2014-03-13 17:45:00 , 2014-03-13 17:55:00

SELECT t1.the_dates AS `from`, t2.the_dates AS `to`
FROM mytable AS t1
JOIN mytable AS t2
  ON t1.the_dates < t2.the_dates
LEFT JOIN mytable AS t3
  ON t3.the_dates > t1.the_dates 
   AND t3.the_dates < t2.the_dates
WHERE t3.the_dates IS NULL
  AND t2.the_dates > DATE_ADD(t1.the_dates, INTERVAL 5 MINUTE)
ORDER BY t1.the_dates;
Run Code Online (Sandbox Code Playgroud)