2016-04-11 13 views
1

良い日、私は、MySQLデータベースからのエントリが少なくとも10日以上経過しているかどうかをチェックする小さなスクリプトを開発しています。 テーブルにはタイムスタンプフィールドがあります(使用したいものですが、必要に応じて変更できます)。MySQLは10日以上のすべてのエントリを選択します

SELECT * 
FROM entries 
WHERE tag='$tag' 
    AND DATE(last_update) > DATE_SUB(CURDATE(), INTERVAL 10 DAY) 

が、私はので、多分、私は何かを勘違いしてる10日より、いくつかの選択項目を「若い」を発見しています: は、実際に私は、このSQL文字列を使用しています。 これは正しい方法ですか、それともPHP経由でチェックする方が良いですか(MySQLクエリではなく)?

ありがとうございます。

+0

例を投稿できますか? 'CURDATE()= X'や' DATE(last_update)= Y'のように返される悪いYの例は何でしょうか? – apokryfos

+0

私はこれを知ることができません。last_updateフィールドが毎回「更新」されているので、間違った動作をする唯一の手掛かりは、毎回増分される「ポストカウント」フィールドがあり、数が増えすぎる –

+1

DBシェルでクエリをテストすると便利です。通常はデータを変更しません。 – apokryfos

答えて

7

older than 10 daysは、計算された日付がbeforeである必要があります。

SELECT * FROM entries 
WHERE tag='$tag' AND DATE(last_update) < DATE_SUB(CURDATE(), INTERVAL 10 DAY) 
+0

ehm ...あなたは正しい...私は何かを台無しにしたと思います。 –

関連する問題