Изглежда, че искате редове с end_date
е по-късно от преди пет дни.
Най-добрият начин да го получите е с
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Работата с добавяне на цели числа към дати не работи в MySQL (това е нещо на Oracle). Така че трябва да използвате INTERVAL n unit
синтаксис.
Ще забележите, че моята клауза WHERE по-горе е функционално еквивалентна на
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Но първата формулировка е по-добра от втората по две причини.
- ако споменете
end_date
в клауза WHERE, без да я обгръщате в изчисления, вашата заявка може да използва индекс на тази колона и да работи по-бързо. DATE(NOW())
иCURDATE()
и двете се отнасят за първия момент от днес (полунощ). НоCURDATE()
е малко по-просто.