2015-12-16 126 views
3

MySQL的1H记录我使用:过去24小时

SELECT * FROM data WHERE date >= now() - INTERVAL 1 DAY 

在最后24小时获取的所有记录。有没有一种方法可以从MySQL中“过滤”,以在该24小时内只读取每个小时的一个值?我真的不介意它的第一记录还是每小时的最后记录。

日期在Mysql时间戳中,并用作主键(CURRENT_TIMESTAMP)。

为什么?我每分钟插入一次温度记录,然后用Google Chart绘制它。当我绘制过去24小时的图表时,它看起来很疯狂!由于它是一个家庭DIY项目,在过去的24小时内以1小时的间隔绘制温度图表很好。

回答

1

试试这个:

SELECT * FROM data WHERE date >= now() - INTERVAL 1 DAY group by hour(date) 
+0

乍一看它的工作完美。输出过去24小时内每小时的最后一条记录。谢谢! – from

0

您可以按小时对数据进行分组,并选择每小时最低的id。如果你加入对你的表子查询 - 你会得到期望的结果

select d1.* 
from data d1 
join 
(
    SELECT min(id) as id 
    FROM data 
    group by date(date), hour(date) 
) d2 on d1.id = d2.id 
WHERE d1.date >= now() - INTERVAL 1 DAY 
+1

它应该是'date'和'hour'要精确 –

+0

请说明您的答案。谢谢! – Dropout

+0

不适用于我...我没有定义d1或d2 colums ....我只有一个名为date的列(输入timestamp,用作主键并自动填充CURRENT_TIMESTAMP)。 – from