Php 如何以分钟分辨率从数据库中选择最上面的值

Php 如何以分钟分辨率从数据库中选择最上面的值,php,mysql,select,Php,Mysql,Select,我有一个mysqli数据库,它每分钟写入一次,通常是每分钟后4或5秒 我想选择在过去36小时内设置为小时顶部的值,但我不知道如何执行 我一直在玩INTERVAL和DATE_ADD,但还没有找到有效的方法。任何帮助都将不胜感激 编辑: 额外信息: 表名: 温度 列名: uid AI 时间戳 问题0 问题1 问题2 问题3 问题4 也许这样做也会更好 现在 现在-1小时 现在-2小时 等 现在-36小时 FWIW,我目前正在使用以下代码,所以选择过去36小时2160行的所有数据 SELECT tim

我有一个mysqli数据库,它每分钟写入一次,通常是每分钟后4或5秒

我想选择在过去36小时内设置为小时顶部的值,但我不知道如何执行

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

编辑:

额外信息: 表名: 温度 列名: uid AI 时间戳 问题0 问题1 问题2 问题3 问题4

也许这样做也会更好 现在 现在-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

如果你想得到每小时的第一条记录,你可以使用MySQL的函数,因为它是一个很好的工具,你需要使用它来按日期和时间对数据进行分组。因此,示例查询如下所示:

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)

我希望这将对您有所帮助,这是一个操场。

我是否理解您的意思正确-您想要过去36小时内每小时的最后一个值?所有36小时的数据是否始终存在,或者是否会有一段时间,在几个小时内没有报告,因此并非所有36小时都存在?既然在那个小时内没有记录,你还会想要最接近它的记录吗?假设我们在13:00:00的时候没有任何条目。是否应该在结果中出现,但列出12:59的详细信息?@codtex,否,每个值的第一个值hour@xQbert说得好,里面可能也有未知数。最合适的可能会起作用。不是100%确定,我正在忙着构建一个图形系统,需要首先获取值,一旦获得值,我将合并图形代码。不知道它会有多灵活。太棒了,谢谢!虽然出于某种原因,它似乎选择了比它应该选择的多得多的内容,但这很酷,我刚刚在按uid DESC LIMIT 36选择和使用顺序中包含了“uid”,以确保只选择了最后36个。