web-dev-qa-db-ja.com

10日間の間隔の前後にすべてのデータを取得するにはどうすればよいですか?

    SELECT * FROM events  WHERE `date` 
    BETWEEN NOW() AND DATE_ADD
    (NOW(), INTERVAL 10 DAY) order by date

上記のコードを使用して、10日間のイベントデータを抽出しています。ここで、この10日間の間隔の前と10日間の間隔の後のすべてのデータを抽出します。どうすれば完璧な方法でそれを行うことができますか?

助けてください。お時間をいただきありがとうございます

4
Allen Titan

おそらく2つのクエリを発行するのが最善です。

_SELECT * FROM events
    WHERE `date` >= NOW() - INTERVAL 10 DAY
      AND `date`  < NOW();

SELECT * FROM events
    WHERE `date` >= NOW()
      AND `date`  < NOW() + INTERVAL 10 DAY;
_

両方を同時に取得することもできますが、それらを分離する必要がある場合は不便です。

_SELECT * FROM events
    WHERE `date` >= NOW() - INTERVAL 10 DAY
      AND `date`  < NOW() + INTERVAL 10 DAY;
_

現在の秒ではなく深夜を基準にしたい場合は、CURDATE()ではなくNOW()を使用します。

2
Rick James