如何在mysql中获取时间差超过1小时的上下数据..?

时间:2016-06-16 06:05:44

标签: mysql

我有一张每小时表格记录的表格如下:

enter image description here

正如您所看到的,每条记录都有1小时的差异,但突出显示的记录有一个多小时。我需要一个查询,它应该返回值上限(id 11379728)和下限(id 11378448),其中间隙超过1小时。

任何帮助将不胜感激。

注意: - 请忽略上次日期时间列,因为它有不同的用途。

1 个答案:

答案 0 :(得分:2)

我得到了一个有效的解决方案(在我的情况下是完美的):

SET @lastDate := (SELECT dateColumn FROM table ORDER BY dateColumn ASC LIMIT 1);

SELECT @lastDate as lastDate, HOUR(TIMEDIFF(dateColumn, @lastDate)) as diff, @lastDate := dateColumn, dateColumn
FROM table 
group by dateColumn 
having diff > 1
order by dateColumn ASC;

在某些情况下,mysql 5.5和5.6会为HAVING子句提供不同的结果。以上查询将在mysql 5.5上运行良好。我创建了另一个版本,可以在这两个版本上运行:

SET @lastDate := (SELECT dateColumn FROM table ORDER BY dateColumn ASC LIMIT 1);

SELECT * FROM (SELECT @lastDate as lastDate, HOUR(TIMEDIFF(dateColumn, @lastDate)) AS diff, @lastDate := dateColumn, dateColumn FROM table GROUP BY dateColumn ORDER BY dateColumn ASC) AS tbl  WHERE tbl.diff > 1;