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.
- 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. DATE(NOW())
ochCURDATE()
båda hänvisar till dagens första ögonblick (midnatt). MenCURDATE()
är lite enklare.