0

我在 MySQL 数据库中有很多数据,为了理解它,我想每隔 10 分钟将其取出。

我可以从中获取数据lap_times,但我不确定如何每 10 分钟将其提取一次,基本上我想做以下事情(在 // 是伪代码之后)。

SHOW * FROM lap_times // WHERE time is between 1370880036 and 1370880636 ?

任何想法我将如何实现这一目标?

4

3 回答 3

1

如果您可以接受从整点开始的 10 分钟块而不是任意偏移量,那么您可以使用类似于以下的逻辑:

SELECT SUM(col) FROM lap_times GROUP BY time - (time % 600);

在使用上面的子句之前,可以通过将它们减去以将它们移回“舍入”时隙处理任意偏移量。timeGROUP BY

于 2013-06-10T16:06:02.633 回答
1
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;
于 2013-06-10T16:09:36.833 回答
1

您需要决定是否希望间隔是“包含”或“不包含”。

对我来说,让间隔在左边“不包含”而在右边“包含”是有意义的......像这样:

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;
于 2013-06-10T16:10:19.023 回答