2016-09-15 9 views
0

5分から10分前に追加されたデータベースからすべての行を取得しようとしています。ここでPHP/MySQLでの日付間の結果の取得

は、私が試したものです:

$query9 = mysql_query("SELECT * FROM user_actions WHERE timestamp BETWEEN date_sub(now(), interval 5 minute) AND date_sub(now(), interval 10 minute);"); 

$onlineUsersLast10Mins = mysql_num_rows($query9); 

6,7,8および9分前から、データベース内のデータを持つにもかかわらず、このスクリプトは、それを拾っていません。どこが間違っていますか? MM:SS最後の二重引用符の前に、クエリの最後にセミコロンを削除する必要がある

+0

それはあなたの左側と思われます間隔は右辺よりも大きい。スワップするとうまくいくのでしょうか? –

+0

ごめんなさい何を意味するのですか – Shane

+0

問題を明確にして解決策を説明しようとするときに答えを書いていきます。私と一緒にくつろいでください:) –

答えて

1

:情報のため

は、日付が通常の形式YYYY-MM-DD HHのタイムスタンプとして格納されている

$query9 = mysql_query("SELECT * FROM user_actions WHERE timestamp BETWEEN date_sub(now(), interval 10 minute) AND date_sub(now(), interval 5 minute)"); 

これは機能するはずです。

+0

こんにちは、残念ながらそれは違いをもたらさなかった...? – Shane

+0

こんにちは、編集しました、また、あなたの間隔は、最初に時間が戻っている日付が必要です--->ここを参照http://stackoverflow.com/questions/9926147/mysql-how-to-use-date-部分間の部分 –

0

BETWEEN's documentationを見てみましょう。

BETWEEN間隔で動作しますが、あなたは、この公式の例を見てみましょ場合:

mysqlの> 3と1の間の2 2、1〜3を選択します。

- > 1、0

あなたは2が1と3の間ですが、右側がのように、左側よりも大きければ2は、SO 3と1の間ではないことがわかります2番目の場合は3が左、1が右の場合、要素はそれらの間にありません。

ので、2は1と3の間ですが、2は3と1

の間ではありません私たちはあなたのクエリを見てみましょう:

SELECT * FROM user_actions WHERE timestamp BETWEEN date_sub(now(), interval 5 minute) AND date_sub(now(), interval 10 minute); 

左側は瞬間が含まれています今より5分早く、右サイドには今よりも10分早い瞬間が含まれています。したがって、右側は実際には左側よりも早い(小さい)。私たちは10分前、5分前に、ない他の方法で回避の間の値を持っているかどうかを確認する必要があります:)

だから、これはクエリする必要があります:

SELECT * FROM user_actions WHERE timestamp BETWEEN date_sub(now(), interval 10 minute) AND date_sub(now(), interval 5 minute); 
関連する問題