mysql - 如何在 MySQL 中以特定时间戳步长选择特定日期/时间范围内的所有行?

标签 mysql sql select timestamp

我有一个包含传感器数据的表,其中的timestamp列保存了传感器测量时间的unix时间戳。 现在我想SELECT具有特定时间步长的特定日期/时间范围内的所有测量值。
我自己想出了第一部分,就像您在下面发布的代码片段中看到的那样。

// With $date_start and $date_stop in the format: '2010-10-01 12:00:00'

$result = mysqli_query($connection, "SELECT sensor_1 
                                     FROM sensor_table 
                                     WHERE timestamp >= UNIX_TIMESTAMP($date_start) 
                                       AND timestamp < UNIX_TIMESTAMP($date_stop) 
                                     ORDER BY timestamp");  

现在 MySQL 中是否有一种方便的方法可以将时间步长包含到同一个 SELECT 查询中?

我的表格包含数月内的数千个测量值,每 5 秒进行一次测量。

现在假设我想在 2010-10-01 12:00:002010-10-02 12:00 之间SELECT测量:00 但在此日期/时间范围内仅每 10 分钟SELECT 一次测量? (因为我的表包含每 5 秒进行一次的测量)。

有什么聪明的想法可以在单个查询中解决这个问题吗?
(也非常欢迎其他想法:))

最佳答案

由于您每 5 秒进行一次测量,因此 $date_start 与第一个匹配测量值之间的差异不能大于 4。然后,我们每 600 秒进行一次测量(允许与时钟存在一些差异)到时钟...)

SELECT sensor_1 
  FROM sensor_table
 WHERE timestamp >= UNIX_TIMESTAMP($date_start) 
       AND 
       timestamp < UNIX_TIMESTAMP($date_stop) 
       AND
       ((timestamp - UNIX_TIMESTAMP($date_start)) % 600) BETWEEN 0 AND 4 
 ORDER BY timestamp;

关于mysql - 如何在 MySQL 中以特定时间戳步长选择特定日期/时间范围内的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55210256/

相关文章:

php - 如何按 DD/MM/YY 格式按日期输出数据库条目?

mysql - 托管在客户端时的数据库安全

php - fatal error :未捕获的 ArgumentCountError:函数 Admincategory::deletecategory() 的参数太少,

SQL存储过程仅返回函数创建的表的第一行

MySQL根据ID从一个表选择到另一个表

mysql - 这条SQL中的 "t"指的是什么?

mysql - 把MySQL命令输出放到一个变量里,也打印在屏幕上?

sql - 检查查询是否已完成

sql - Oracle "row_limiting_clause"如何获取rowcount|百分比 PERCENT 行在 Oracle 12c 中有效吗?

php按路径选择数组