恢复丢失的小时,分​​钟间隔的MySQL数据库

这是我的MySQL数据库表的一部分

+----------+---------------------+--------+
| sID      | sDatetime           | sETX   | 
+----------+---------------------+--------+
| 16213404 | 2020-04-24 16:00:00 | 497681 |
| 16213398 | 2020-04-20 14:58:56 | 281011 | 
+----------+---------------------+--------+

该表有14.121.398条记录

我意识到在这种情况下,上一行和下一行之间已经过去了一个多小时

mysql> SELECT
    TIMEDIFF(
        '2020-04-20 16:00:00',
        '2020-04-20 14:58:56'
    );
+------------------------------------------------------------------+
| TIMEDIFF(
        '2020-04-20 16:00:00',
        '2020-04-20 14:58:56'
    ) |
+------------------------------------------------------------------+
| 01:01:04                                                         |
+------------------------------------------------------------------+
1 row in set

这是不可能的,因为每五分钟最多从源下载一次数据

在这种情况下,缺少3pm到4pm之间的时间段

我尝试过此查询没有成功,因为返回全为零

我认为因为sID不连续

我在下面尝试过的代码

SELECT A.`sID`, A.`sDatetime`, (B.`sDatetime` - A.`sDatetime`) AS timedifference
FROM tbl_2020 A INNER JOIN tbl_2020 B ON B.sID = (A.sID + 1)
ORDER BY A.sID ASC;

如何在mysql表中找到此异常?

我的MySQL版本是5.5.62-log

列的名称为sDatetime,类型为Datetime。

有什么建议吗?

预先感谢您的任何帮助

评论
  • 飘来五个字
    飘来五个字 回复

    你应该尝试这样的事情

    SELECT
        sID
       ,TIME_TO_SEC(TIMEDIFF(@date,sDatetime)) time_diff
       ,@date := sDatetime
       ,sETX
    FROM(
    SELECT * FROM table1
    ORDER BY sDatetime DESC) s1,(SELECT @date :=(SELECT MAX(sDatetime) FROM table1)) s2
    HAVING time_diff > 300
    

    首先,您按时间对表格进行排序,然后获取两个连续行之间的时差,并检查它们是否大于5分钟

    see example here https://www.db-fiddle.com/f/2yKt6d5RWngXVYJKPGZL6m/8