Il semble que vous vouliez des lignes où end_date
il y a plus de cinq jours.
La meilleure façon d'y parvenir est avec
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
L'ajout d'entiers aux dates ne fonctionne pas dans MySQL (c'est un truc d'Oracle). Vous devez donc utiliser l'unité INTERVAL n unit
syntaxe.
Vous remarquerez que ma clause WHERE ci-dessus est fonctionnellement équivalente à
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Mais, la première formulation est supérieure à la seconde pour deux raisons.
- si vous mentionnez
end_date
dans une clause WHERE sans l'envelopper dans des calculs, votre requête peut exploiter un index sur cette colonne et s'exécuter plus rapidement. DATE(NOW())
etCURDATE()
tous deux se réfèrent au premier moment d'aujourd'hui (minuit). MaisCURDATE()
est un peu plus simple.