如何使用分钟分辨率从数据库中选择顶部的值

时间:2017-08-01 14:45:55

标签: php mysql select

我有一个mysql(i)数据库,写入每分钟(通常在分钟后4或5秒)。

我想选择在过去36小时内按时间排列的值,我不知道该怎么做。

我一直在玩INTERVAL和DATE_ADD,但还没找到有效的东西。任何帮助将不胜感激。

Here's one of the rows that I'd like to select

修改

额外信息:
表名:
温度
列名:
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

1 个答案:

答案 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就是游乐场。