下面将为您提供一个包含时间戳为 :00、:05、:10 ... 的任何数据的示例。
SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
AND mod(minute(time),5) = 0
我使用 modulo 函数来检查时间的分钟部分是否(0 或)可被 5 整除。
如果每个时间段只需要一个结果,我们就必须变得更加复杂。
SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5),
min(temp_out), avg(temp_out), max(temp_out)
FROM wmr200
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5
我现在无法访问 MySQL 实例来测试它,但我的想法是这样的。它按每五分钟分组,按日期、小时和时间分组round(minute(time)/5,0)*5
- 将分钟四舍五入到最接近的 5。
它选择应该分组的时间值,以及最小、平均和最大 temp_out,因为我不确定其中哪一个最适合您的情况。
但是,如果您的数据库没有 5 分钟范围内的数据(或 30 分钟范围内的数据,如果您正在使用的话),则它可能仍然没有样本点的数据。