2011-12-08 11 views
2

過去24時間に1時間に検出された行の数をフィルタリングしようとしています。過去24時間のタイムスタンプによるフィルタ結果

次のSQLクエリを使用しています。 'landtime'はDateTimeフィールドです。

SELECT HOUR(landtime) as hour, COUNT(*) as total FROM ord_log WHERE landtime > DATE_SUB(NOW(), INTERVAL 24 HOUR) GROUP BY HOUR(landtime) ORDER BY HOUR(landtime) 

サンプルデータセット>http://pastebin.com/0rYBnePG

予想通り、私はそれを使用していたデータを見までの結果は、見えました。

過去24時間のカウントだけが必要な今日の日付より前に日付が引かれていました。

+0

を、私は何か他のものが間違っているかもしれないと思います。 'ord_log'のサンプルデータ、期待しているクエリ結果、取得しているクエリ結果を投稿してください。ありがとう! –

+0

コメントをRyans replyに追加してご覧ください。 – CelebornThingol

+0

サンプルデータをデータベースに追加し、提案したクエリを実行しました。それは正常に働いた。それは過去24時間の行だけを見ていました。 –

答えて

-2

機能を使用する必要はありませんが、単純な数学を使用します。クエリがそのまま動作する必要があることを

SELECT HOUR(landtime) as hour, COUNT(*) as total FROM ord_log WHERE landtime > (CURRENT_TIMESTAMP - INTERVAL 1 DAY) GROUP BY HOUR(landtime) ORDER BY HOUR(landtime) 
+0

ライアンのおかげで、もっとシンプルに見えますが、私が期待していたことをまだ証明していません。私の元の質問に追加されたデータセットを見てください。私はそれが7日目の05時にインスタンス156に戻ることを期待します。 – CelebornThingol

0
SELECT * FROM table WHERE day(data) = EXTRACT(day FROM (NOW() - INTERVAL 1 day)) 
関連する問題