2012-03-15 8 views
5

私は過去20分間のデータベースからの結果を参照するこのクエリを持っていますが、今は時間、日などで調べる方法を知っていますが、遠くまでしか調べることはできませんその日の深夜に戻る。だから今までクエリが実行されていて、今まで何度も真夜中までしか戻っていないのですか?Mysql真夜中に戻す質問

SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) and ip='$ip' 

これは私のコードですが、特定の時間間隔を置き換えることができます。

ご協力いただければ幸いです。

+0

あなたはMySQLのDATE_FORMATを(使用)となりました(でき)あなたは完璧に働い> =、ない> –

答えて

22

バック現在の日の深夜に見ると時間がない成分と現在の日付を見ていると同じです。したがって、DATE()を使用して日時列dateを日付部分のみに切り捨て、それをCURDATE()と比較することができます。

SELECT * FROM ip_stats WHERE DATE(date) = CURDATE() and ip='$ip' 
+0

はあなたに感謝するつもりだ –

+0

これは、当日からレコードを取得するための完璧なソリューションだと思います。 –

0

dateの列をcurdate(今日の開始日)より大きくするだけです。

SELECT * FROM ip_stats 
WHERE date >= (NOW() - INTERVAL 20 MINUTE) 
and date > CURDATE() 
and ip='$ip' 
+1

、私はなぜ知りません私はそれを考えなかった。 – Jason

0

あなたは、現在の日の午前0時から行を取得するためにCURDATE()を使用することができます。

SELECT * FROM ip_stats WHERE date >= CURDATE() and ip='$ip' 
1
SELECT * FROM ip_stats WHERE date >= (NOW() - INTERVAL 20 MINUTE) AND date >= CURDATE() and ip='$ip' 
0
SELECT * 
FROM ip_stats 
WHERE date >= GREATEST(NOW() - INTERVAL 20 MINUTE, CURRENT_DATE) 
AND ip = '$ip' 
関連する問題