[英]How to get upper and lower data where time difference is more than 1 hour in mysql..?
I have a table having per hour table records like this : 我有一张每小时都有这样的表记录的表:
As you can see every record have 1 hour difference but the highlighted one has more than one hour. 如您所见,每条记录相差1小时,但突出显示的记录相差一小时以上。 I need a query which should return me both values upper (
id 11379728
) and lower ( id 11378448
) where gap is more than 1 hour. 我需要一个查询,该查询应同时返回间隙大于1小时的上
id 11379728
( id 11379728
)和下id 11378448
( id 11378448
)。
Any help will be appreciated. 任何帮助将不胜感激。
Note :- please ignore last datetime column as it serves different purpose. 注意:-请忽略最后一个datetime列,因为它具有不同的用途。
I got a working solution (perfect in my case) : 我有一个有效的解决方案(对我而言是完美的):
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;
In some cases mysql 5.5 and 5.6 will give different results for HAVING
clause. 在某些情况下,mysql 5.5和5.6会为
HAVING
子句提供不同的结果。 Above query will run good on mysql 5.5. 上面的查询将在mysql 5.5上运行良好。 I have created another version to run on both version similarly like this :
我创建了另一个版本,可以在两个版本上类似运行:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.