mysql - 时间间隔内的SQL

标签 mysql sql

我有以下查询,它将从指定设备上的日期范围和固定时间进行查询。我怎样才能修改查询以使时间在+ - 10分钟之内。 例如,如果用户选择下午 4:00,则查询应满足日期范围内每一天的下午 3:50 至下午 4:10。

SELECT Timestamp, AVG(Value) 
FROM STATIC_SENSOR_READINGS 
WHERE 
Node_ID IN ($sdNodeList) AND  
Modality = 'Temperature' AND 
Timestamp BETWEEN ? AND ? AND  // This will be the date range.
date_format(`Timestamp`, '%H:%i') = '$time'  // Specific time here
GROUP BY Timestamp

最佳答案

要检查 mysql 中的时间戳是否“大致”相等,您可以使用 TIMESTAMPDIFF() 函数。

在您的示例中,您需要类似以下内容:

SELECT Timestamp, AVG(Value) 
FROM STATIC_SENSOR_READINGS 
WHERE 
Node_ID IN ($sdNodeList) AND  
Modality = 'Temperature' AND 
Timestamp BETWEEN ? AND ? AND  // This will be the date range.
ABS(TIMESTAMPDIFF(MINUTES, Timestamp, '$time')) < 10 
GROUP BY Timestamp

您可能需要调整时间/时间戳格式以满足您的需要。

关于mysql - 时间间隔内的SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009132/

相关文章:

sql - Grails更新生产数据库

javascript - Drupal - 轻松将自定义代码转换为 drupal 模块?

Mysql无密码登录、有密码被拒绝

mysql - 1048 错误,即使将值赋予 mysql 列

php - Preg_match 使用数组?

php - 在哪里保存临时数据?

mysql - 我应该使用 (select count(id) from table2) 作为 col1,还是应该在表 1 上存储一个计数器并在插入时增加它?

java - 使用 Java 的 SQL 正则表达式

sql - 如何使用 Golang 在 Postgres 中批处理 SQL 语句

sql - 如何检查集合中是否有每个 id 的行?