2017-03-15 2 views
2

最後の完全な5分間隔を私のテーブルから選択したいと思います。MySQL:最後の完全な5分間隔を選択してください

例:今

  • 時間:午前9時32分午前 - >選択 - >午前9時25 - 9時30分午前
  • 今の時間:22:44 - >選択 - 22:40

enter image description here

私はグループが5分間隔に

を選択する私の方法を知っている - > 10時35分10

私も最後の5分

where (endtime between now()-Interval 5 minute and now()) 

を選択する方法を知っているしかし、どのように私は上記の例に示すように、最後のフル5分間隔を得るのですか?

+0

あなたは私たちにいくつかのサンプルデータを表示してくださいことはできますか? –

答えて

1

あなたの入力に基づいて予想される出力について言及していないので、あなたの質問は依然としてあまり明確ではありません。ただし、このコードを使用すると、now()に基づいてstart_timeとend_timeを取得できます。あなたの要件に応じてnow()を変更してください。

select 
date_sub(str_to_date(concat(hour(now()),':',floor(minute(now())/5)*5),'%H:%i'),interval 5 minute) as start_time, 
str_to_date(concat(hour(now()),':',floor(minute(now())/5)*5),'%H:%i') as end_time, 
now(); 

説明:最初は、(小数点以下を削除)、床を取り、あなたの最寄りの終了時間を与える5.これを掛け、5分で割ります。それから5分を引いてstart_timeを得る。

0

あなただけの最新endtimeの5分以内に起こったレコードに結果セットを制限したいなら、あなたは次のことを試すことができます。

SELECT * 
FROM yourTable 
WHERE endtime > (SELECT MAX(endtime) FROM yourTable) - INTERVAL 5 MINUTE 
0

あなたは近かった:

WHERE endtime > date_sub(now(), interval 3 minute); 
+0

これは、表示されたデータでは機能しますが、現在の時間が変更されても機能しません。 –

0

使用

select ceil(minute(now())/5) as `x` 

x(1-12)が得られます。その後に5を掛けます。

我々は、次に、X = 7(5分の32 = 6.xの=> 7)

between ((x-1)*5) and (x*5) = (7-1)*5 and 7*5 = 30-35 

===添加====それ連結

に "32" されている場合1時間

0

私はそれを得たと思う:

select 
    a.end_time - Interval 5 minute as start_time, 
    a.end_time 
from 
    (
    select 
     str_to_date(concat(date(now()), ' ', hour(now()),':',floor(minute(now())/5)*5),'%Y-%m-%d %H:%i') as end_time 
) a 

結果

enter image description here

関連する問題