Wygląda na to, że chcesz wiersze, w których end_date jest później niż pięć dni temu.
Najlepszym sposobem na osiągnięcie tego jest
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Biznes dodawania liczb całkowitych do dat nie działa w MySQL (to rzecz Oracle). Musisz więc użyć jednostki INTERVAL n unit składnia.
Zauważysz, że moja klauzula WHERE powyżej jest funkcjonalnie równoważna z
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Ale pierwsze sformułowanie jest lepsze od drugiego z dwóch powodów.
- jeśli wspomnisz o
end_datew klauzuli WHERE bez zawijania jej w obliczenia, twoje zapytanie może wykorzystać indeks w tej kolumnie i może działać szybciej. DATE(NOW())iCURDATE()oba odnoszą się do pierwszej chwili dnia dzisiejszego (północ). AleCURDATE()jest nieco prostsze.