sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag lägga till dagar till ett datum i MYSQL i en fråga

Det ser ut som att du vill ha rader där end_date är senare än fem dagar sedan.

Det bästa sättet att få det är med

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Verksamheten med att lägga till heltal till datum fungerar inte i MySQL (det är en Oracle-grej). Så du måste använda INTERVAL n unit syntax.

Du kommer att märka att min WHERE-sats ovan är funktionellt likvärdig med

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Men den första formuleringen är överlägsen den andra av två skäl.

  1. om du nämner end_date i en WHERE-sats utan att linda in den i beräkningar, kan din fråga utnyttja ett index på den kolumnen och kan köras snabbare.
  2. DATE(NOW()) och CURDATE() båda hänvisar till dagens första ögonblick (midnatt). Men CURDATE() är lite enklare.


  1. MySQL slå samman många till många en rad

  2. Hanterar tidszoner i PHP och MySQL

  3. SQL SELECT för nybörjare

  4. Fel:INTO angav mer än en gång vid eller nära INTO