Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich Tage zu einem Datum in MYSQL in einer Abfrage hinzufügen

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.

  1. 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.
  2. DATE(NOW()) und CURDATE() beide beziehen sich auf den ersten Moment des heutigen Tages (Mitternacht). Aber CURDATE() ist etwas einfacher.