Es sieht so aus, als wollten Sie Zeilen mit end_date
ist später als vor fünf Tagen.
Das geht am besten mit
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Das Hinzufügen von Ganzzahlen zu Daten funktioniert in MySQL nicht (es ist eine Sache von Oracle). Sie müssen also die Einheit INTERVAL n unit
verwenden Syntax.
Sie werden feststellen, dass meine WHERE-Klausel oben funktionell äquivalent zu
ist WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Aber die erste Formulierung ist der zweiten aus zwei Gründen überlegen.
- wenn Sie
end_date
erwähnen in einer WHERE-Klausel, ohne sie in Berechnungen einzuschließen, kann Ihre Abfrage einen Index für diese Spalte ausnutzen und schneller ausgeführt werden. DATE(NOW())
undCURDATE()
beide beziehen sich auf den ersten Moment des heutigen Tages (Mitternacht). AberCURDATE()
ist etwas einfacher.