end_date
の行が必要なようです 5日前より後です。
それを取得するための最良の方法は
を使用することです WHERE end_date >= CURDATE() - INTERVAL 5 DAY
日付に整数を追加するビジネスは、MySQLでは機能しません(これはOracleのものです)。したがって、INTERVAL n unit
を使用する必要があります 構文。
上記のWHERE句は機能的に
と同等であることに気付くでしょう。 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
ただし、2つの理由から、最初の定式化は2番目の定式化よりも優れています。
-
end_date
について言及した場合 計算でラップせずにWHERE句を使用すると、クエリはその列のインデックスを利用して、より高速に実行できます。 -
DATE(NOW())
およびCURDATE()
どちらも今日の最初の瞬間(真夜中)を指します。ただし、CURDATE()
少し簡単です。