MySQL / MariaDB:如何查找基于时间的数据的差距?

2024-01-02

记录器系统每 5 秒保存一行数据(秒==0,5,10,15,...,55;时间类似于23:00:07不可能)。

有时,记录器由于通信错误而无法保存,并且表中只是缺少行。

我需要检测这些间隙:我想读取间隙之前的最后一行和间隙之后的第一行。

这些是演示数据:

create table #time (
    DateTime datetime not null,
    Value int not null
);

insert into #time (DateTime, Value)
    values
        ('2018-08-23 00:00:00', 123),
        ('2018-08-23 00:00:05', 152),
        ('2018-08-23 00:00:10',  37),
        ('2018-08-23 00:00:15', 141),
        ('2018-08-23 00:00:20',  41),
        ('2018-08-23 00:00:25',  35),
        ('2018-08-23 00:00:30', 143),
        ('2018-08-23 00:00:35',  67),
        ('2018-08-23 00:00:40', 111),
                                        /* gap of one minute here */
        ('2018-08-23 00:01:45', 123),
        ('2018-08-23 00:01:50', 145),
        ('2018-08-23 00:01:55', 141),
        ('2018-08-23 00:02:00',  87),
                                        /* gap of 10 seconds here */
        ('2018-08-23 00:02:15', 190),
        ('2018-08-23 00:02:20', 122),
        ('2018-08-23 00:02:25', 123);

select * from #time;

他们也在雷克斯测试仪 http://rextester.com/AMEC43472

我想回读一下:

    GapStart              GapEnd                Size
0   2018-08-23 00:00:40   2018-08-23 00:01:45   0000-00-00 00:01:45
1   2018-08-23 00:02:00   2018-08-23 00:02:15   0000-00-00 00:00:15

当然不应列出 5 秒的间隙

我发现的是同一行中的开始/结束日期时间(查找时间表数据中特定时间之间的差距 https://stackoverflow.com/questions/45444166/find-gaps-in-timesheet-data-between-certain-hours),或者太复杂for me适应我的情况(查找连续日期中的空白 https://stackoverflow.com/questions/35200652/find-gaps-in-sequential-dates).

我正在使用 MariaDB 10.0.28(无法升级):这意味着LAG()不可用。

先感谢您


一种方法可能是首先进行子查询,并将每个记录与具有最近的较大时间戳的记录配对。然后,查询并返回具有足够大小间隙的所有记录。

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT MIN(DateTime) FROM #time t2
         WHERE t2.DateTime > t1.DateTime) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;   -- or whatever threshhold you want

Demo http://rextester.com/KLFSA79205

添加到原始答案

If DateTime总是在增长,可以通过改变内部SELECT来获得速度的提升:

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT DateTime FROM #time t2
         WHERE t2.DateTime > t1.DateTime LIMIT 1) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL / MariaDB:如何查找基于时间的数据的差距? 的相关文章

  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • 选择前 n 个字符相等的行(MySQL)

    我有一张带有玩家句柄的桌子 如下所示 1 N Laka 2 N James 3 nor Brian 4 nor John 5 Player 2 6 Spectator 7 N Joe 从那里我想选择第一个 n 字符匹配的所有玩家 但我不知道
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • 当与“<”或“>”运算符一起使用时,MySQL 不使用 DATE 上的索引吗?

    我正在使用解释来测试这些查询 col 类型是 DATE 这使用索引 explain SELECT events FROM events WHERE events date 2010 06 11 这不 explain SELECT event
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • 尝试在 React 应用程序中连接到 MySQL 数据库时,无法读取未定义的属性(读取“查询”)错误

    我正在尝试连接到 MySQL 数据库并在单击按钮后在 React 应用程序中运行查询 一些它如何给出错误 我当前的代码如下所示 import mysql from mysql function App async function sync
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • 何时在 mysql 中使用 Union [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于 Union 您会在什么现实情况下使用它 因为对我来说 对具有不同列用途 含义的两个表中的两个选择查询使用联合是没有意义的 例如
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • 如何导出带有数据的 MySQL 架构?

    我有一个完整的架构 其中有许多表 其中包含 MySQL 查询浏览器中的数据 现在我想将这个包含所有表 数据的完整数据库发送给我的同事 我怎样才能将其发送给我的同事 以便他可以将这个完整的架构放入他的 MySQL 查询浏览器中 Thanks
  • MySQL Python 关于重复键更新值

    我正在研究使用 python 将 JSON 数据上传到 MySQL 我需要在插入语句中包含 ON DUPLICATE KEY UPDATE VALUES 但在 Python 中遇到了问题 如果我运行以下代码 一切正常 import json
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • MySQL 将表从 Latin1 转换为 utf8

    我需要将包含大量数据的表从 Latin1 转换为 utf8 以便它可以接受韩语字符 如何更改该表而不损坏其中的数据 我的 SQL 语句是什么 最好的方法是什么 ALTER TABLE database name table name CON
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突

随机推荐

  • Azure Functions DocumentClient 无法从程序集异常加载类型

    我有一个 Azure Function v2 它调用一个实用程序库 该库又实例化一个DocumentClient 当在本地运行我的函数时 它会在此行引发异常 client new DocumentClient new Uri cosmosD
  • 响应开头额外的未定义字符[重复]

    这个问题在这里已经有答案了 这阻止了我使用 JSON 也阻止了使用 React 或 Ember 使用 AJAX 向服务器发送请求时 我收到一个额外的未定义 unicode 字符 这会导致解析器错误 因为它破坏了 JSON 我已经检查了我拥有
  • 自动将公共更改为私有(Java)

    我正在对从其他语言翻译成 Java 的代码进行重构 我想自动完成它 我的问题是 我有很多不是私有的方法 但只是在声明它们的同一个类中调用 并且我想将它们设为私有 我有很多课程 我想是否有什么可以帮助我半自动地完成它 我想知道 你知道我是否可
  • .NET 中的并行抓取

    我工作的公司运营着数百个非常活跃的网站 它决定建立一个搜索引擎 我的任务是编写爬虫 一些网站在旧硬件上运行 无法承受太多惩罚 而另一些网站则可以处理大量并发用户 我需要能够说对站点 A 使用 5 个并行请求 对站点 B 使用 2 个并行请求
  • vtkRenderer 错误

    我是 vtk 的新手 所以我首先使用 CMake 和 Visual Studio 2017 构建 vtk 8 1 1 并使用默认选项和示例 许多示例运行良好 但其中一些会出现错误 这是 CreateTree 示例 但 HelloWorld
  • 无法使用 Gradle 6.1.1 解析 junit-jupiter-params:5.6.2 和 junit-jupiter-engine:5.6.2

    我有一个 Android 项目 其中包含 2 个 Android 模块和 1 个纯 Java 模块 将 android 构建工具更新为 com android tools build gradle 4 0 0 并将 gradle 包装器更新
  • 使用 OAuth2 将 JHipster 中的前端和 API 服务器分开不起作用

    我使用 OAuth2 创建了一个简单的 JHipster 6 2 0 Angular 应用程序 并且还单独生成了一个客户端应用程序 此外 我使用 keycloak yml 为 Keycloak 创建了一个 docker JHipster 附
  • 使用 for 循环在 ggplot2 中添加图层

    我想这很容易 但我不明白 它与 ggplots 上 for 循环的使用有关 问题是 为什么下面这两个代码给出不同的结果 看起来好像在带有循环的代码上 只考虑了第二次迭代 但我不知道为什么 根本问题是 是否可以使用 ggplot2 对象运行此
  • Android 数据存储 IOException 无法重命名为

    我正在尝试在我的项目中实现 Jetpack Datastore 我当时用的是apha 01版本和代码工作正常 然后我在Gradle文件中看到有新版本所以我将其更新为alpha 03 启动我的应用程序后 我遇到了另一个问题 我发现Proto库
  • 为什么我在 Android 上无法检测到带有 unicode 字符的 wifi SSID?

    我有一个 Wi Fi AP 其 SSID 是一串 unicode 字符 例如 我希望 Android 设备连接到它 当我的设备 Nexus One 检测到热点时 SSID 看起来像这样 并且无法识别它 知道如何解决这个问题吗 802 11数
  • Python数据结构按字母顺序排序列表[重复]

    这个问题在这里已经有答案了 我对 python 中的数据结构有点困惑 and 我正在尝试对一个简单的列表进行排序 可能是因为我无法识别数据的类型 所以无法对其进行排序 我的清单很简单 Stem constitute Sedge Eflux
  • Scala:在路径相关上下文中重用路径相关类型产生的泛型

    简而言之 以下内容无法编译 原因如下 我怎样才能使其工作 trait Simulator type CM T def useCM v CM case class CMH S lt Simulator T cm S CM T class Si
  • 查找不平衡的大括号和圆括号

    海湾合作委员会4 6 0 GNU Emacs 23 2 1 我有一些 C 代码 在某些时候我一定犯了一个打字错误 现在我留下了不平衡的花括号或括号 我有大约 2000 行代码 我只是想知道有什么技术可以找到它们吗 Emacs 有一些很好的功
  • 我应该使用 ON DELETE CASCADE、 :dependent => :destroy 还是两者都使用?

    在 Rails 应用程序中 我在 MySQL 中有外键约束 我将它们全部手动设置 与我的迁移分开 我想弄清楚我是否应该使用 ActiveRecord dependent gt destroy选项 例如 在我的架构中我有表 users log
  • 如何在 python 中检索按钮的行和列信息并使用它来更改其设置

    我正在创建一个游戏并尝试用 python 和 tkinter 制作它 我已经用基于单词的 python 完成了它 并希望将其图形化 我创建了一个用作网格的按钮网格 这些按钮当前带有字母 O 以显示空白区域 然而 我想要的是显示海盗所在位置的
  • 使用 DataFrame.lookup 获取列名称是字符串子集的行

    假设有一个如下所示的简单数据框 data grades Feb 10 20 30 40 50 grades Jan 5 10 15 20 25 grades April 1 2 3 4 5 months Feb April Jan Feb
  • 如何使用具有深度限制的 jQuery find() ?

    我需要使用 jquery 的 find 选择器来获取所有具有 field container 类的 div 问题是我无法深入 DOM 树 这是我的简化 HTML 结构 div div div class field container sp
  • JTable 中的多行选择

    我有一个 JTable 其中一列是不可编辑的文本 第二列是一个显示布尔值的复选框 现在我想要的是 当用户选择多行并取消选中其中任何一行时选中复选框 则选择下的所有复选框都应取消选中 反之亦然 使用 Hovercraft 的示例和 camic
  • 简单插入适用于 phpmyadmin 但不适用于 php

    我正在尝试使用 mysql query 插入此查询 INSERT INTO um group rights um group id cms usecase id um right id VALUES 2 1 1 INSERT INTO um
  • MySQL / MariaDB:如何查找基于时间的数据的差距?

    记录器系统每 5 秒保存一行数据 秒 0 5 10 15 55 时间类似于23 00 07不可能 有时 记录器由于通信错误而无法保存 并且表中只是缺少行 我需要检测这些间隙 我想读取间隙之前的最后一行和间隙之后的第一行 这些是演示数据 cr