我有一个包含传感器数据的表,其中的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:00
和 2010-10-02 12:00 之间
但在此日期/时间范围内仅每 10 分钟SELECT
测量:00SELECT
一次测量? (因为我的表包含每 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/