我在 MySQL 数据库中有很多数据,为了理解它,我想每隔 10 分钟将其取出。
我可以从中获取数据lap_times
,但我不确定如何每 10 分钟将其提取一次,基本上我想做以下事情(在 // 是伪代码之后)。
SHOW * FROM lap_times // WHERE time is between 1370880036 and 1370880636 ?
任何想法我将如何实现这一目标?
如果您可以接受从整点开始的 10 分钟块而不是任意偏移量,那么您可以使用类似于以下的逻辑:
SELECT SUM(col) FROM lap_times GROUP BY time - (time % 600);
在使用上面的子句之前,可以通过将它们减去以将它们移回“舍入”时隙来处理任意偏移量。time
GROUP BY
SET @start_time = CONVERT('2013-06-10 12:15', datetime);
SELECT *
FROM lap_times
WHERE time BETWEEN @start_time and @start_time + INTERVAL 10 MIN;
您需要决定是否希望间隔是“包含”或“不包含”。
对我来说,让间隔在左边“不包含”而在右边“包含”是有意义的......像这样:
set @t = 1370880636;
select *
from lap_times as lt
where lt.time > @t - 600 and lt.time <= @t;
如果您希望间隔在两边都“包含”,您可以使用between
:
set @t = 1370880636;
select *
from lap_times as lt
where lt.time between @t - 600 and @t;