我有一个mysql(i)数据库,写入每分钟(通常在分钟后4或5秒)。
我想选择在过去36小时内按时间排列的值,我不知道该怎么做。
我一直在玩INTERVAL和DATE_ADD,但还没找到有效的东西。任何帮助将不胜感激。
修改
额外信息:
表名:
温度
列名:
uid(AI)
时间(时间戳)
probe0
PROBE1
PROBE2
probe3
probe4
或许也可能更好
现在
现在-1小时
现在-2小时
等
现在-36小时
FWIW,我目前正在使用以下代码,因此请选择过去36小时内的所有数据(2160行)
SELECT time, probe0, probe1, probe2, probe3, probe4 FROM temperature WHERE temperature.time >= DATE_ADD(NOW(), INTERVAL -2160 MINUTE) ORDER BY temperature.time DESC
答案 0 :(得分:1)
如果您想获得每小时的第一条记录,您可以使用MySQL的MIN()功能,因为它是Aggregate Function,您需要使用GROUP BY对您进行分组按日期和小时的数据。因此,示例查询将如下所示:
SELECT
MIN(`time`) as first_for_hour, probe0, probe1, probe2, probe3, probe4
FROM `temperature`
WHERE `time` >= DATE_ADD(NOW(), INTERVAL -2160 MINUTE)
GROUP BY DATE(`time`), HOUR(`time`);
并且为了在36小时后读取数据,我使用了你的WHERE子句:
WHERE `time` >= DATE_ADD(NOW(), INTERVAL -2160 MINUTE)
我希望这会对你有所帮助,here就是游乐场。