2

データベース内のテーブルからすべてのデータ行を選択するクエリがあります。PHPとMySQLを使用しています。テーブル内のすべての行を取得する代わりに、現在から 2 週間前までの行のみを取得したいと考えています。これどうやってするの?WHERE 句を追加する必要があることはわかっています

私のコードこれまで:

$notifications_query= "SELECT * FROM notifications ORDER BY recieved DESC";

使用される日付を含む列の名前は「閲覧済み」で、「日時」形式です。

ありがとう!

4

6 に答える 6

1

ここで説明されている datediff() 関数を含む where 句を使用できます

http://www.w3schools.com/sql/func_datediff.asp

于 2013-06-19T21:49:14.853 に答える
0

これを行うにはたくさんの方法があり、いくつかの微妙な点があるため、さまざまな答えがありました。

最も簡単なのは、受け取った値が将来ではない場合、次のようなことをすることです...

WHERE received > DATE_SUB( CURDATE(), INTERVAL 14 DAY )

また

WHERE DATEDIFF( CURDATE(), received ) < 14

受け取った値が将来のものである可能性があり、14 日前から今日までのスライスが必要な場合は、それほど複雑ではありません。

WHERE received BETWEEN DATE_SUB( CURDATE(), INTERVAL 14 DAY ) AND CURDATE()

または再び、

WHERE DATEDIFF( CURDATE(), received ) BETWEEN 0 AND 14

これに加えて考慮すべきことの 1 つは、日付フィールドまたは日時フィールドを受け取るかどうかです。CURDATE() は、日時と比較すると常に今日の午前 0 時であるため、これらの BETWEEN クエリでは、実際には今日の途中の日時が省略される場合があります。 CURDATE の日時値。それが問題になる場合は、代わりに NOW() を使用してください。

于 2013-06-19T22:05:29.547 に答える