0

MySQL データベースに大量のデータがあるので、それを理解するために 10 分間隔で取り出したいと考えています。

からデータを取得できますが、lap_times10分ごとにデータを引き出す方法がわからないため、基本的には以下を実行したいと考えています(//の後は疑似コードです)。

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

これを達成する方法はありますか?

4

3 に答える 3

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 に答える
1

任意のオフセットではなく、正時から始まる 10 分のブロックを受け入れることができる場合は、次のようなロジックを使用できます。

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

任意のオフセットは、上記の句を使用する前に、から減算して「丸められた」タイムスロットに戻すことで処理できます。timeGROUP BY

于 2013-06-10T16:06:02.633 に答える