我希望有人可以帮我查询一下?我有一个表,每10秒24/7写一次条目/行,所以很多行和图表需要很长时间。我想每30分钟选择一行,一个例子可能是最好的。以下工作,但每隔30分钟给我一次结果。
SELECT * FROM db.table WHERE mytimestamp AND mod(minute(time),30) = 0
给我时间如下的结果
2014-03-01 01:30:01
2014-03-01 01:30:13
2014-03-01 01:30:24
2014-03-01 01:30:35
2014-03-01 01:30:46
2014-03-01 01:30:58
2014-03-01 02:00:01
2014-03-01 02:00:13
2014-03-01 02:00:24
2014-03-01 02:00:35
2014-03-01 02:00:46
2014-03-01 02:00:57
我想要的只是一个像这样的结果
2014-03-01 01:30:01
2014-03-01 02:00:01
2014-03-01 02:30:01
答案 0 :(得分:2)
SELECT
*
FROM db.table
WHERE
(mytimestamp like '%:00:%') or (mytimestamp like '%:30:%')
GROUP BY group by DATE_FORMAT(mytimestamp, '%Y-%M-%d %H:%i')
答案 1 :(得分:1)
根据您的示例和您想要的发布回答,您希望以30:01或00:01正确结束的时间间隔?
您可以使用的一种方法是LIKE
select * from SamplerTable where
(Daytime like '%:00:01%') or (Daytime like '%:30:01%');
尽管如此,请注意插入的记录绝对必须以:30:01或00:01使用此方法结束。
Fiddle在这里。如果这有帮助,请告诉我。
编辑:最接近00或30,或许仍然有效。
select * from SamplerTable where
(Daytime like '%:00:%') or (Daytime like '%:30:%');
将输出分钟为00或30的记录。您只需添加order by来对输出asc或desc进行排序
编辑:像仍然有效,只需添加GROUP by:
select * from SamplerTable where
(Daytime like '%:00:%') or (Daytime like '%:30:%')
group by DATE_FORMAT(Daytime, '%Y-%M-%d %H:%i')
CREDIT去了Rajavel D这个答案。 Fiddle