Parece que você quer linhas onde
end_date
é mais tarde do que há cinco dias. A melhor maneira de conseguir isso é com
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
O negócio de adicionar números inteiros a datas não funciona no MySQL (é uma coisa do Oracle). Então você precisa usar a unidade
INTERVAL n unit
sintaxe. Você notará que minha cláusula WHERE acima é funcionalmente equivalente a
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Mas, a primeira formulação é superior à segunda por duas razões.
- se você mencionar
end_date
em uma cláusula WHERE sem envolvê-la em cálculos, sua consulta pode explorar um índice nessa coluna e pode ser executada mais rapidamente. DATE(NOW())
eCURDATE()
ambos se referem ao primeiro momento de hoje (meia-noite). MasCURDATE()
é um pouco mais simples.