Det ser ud til, at du vil have rækker med end_date
er senere end fem dage siden.
Den bedste måde at få det på er med
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Forretningen med at tilføje heltal til datoer fungerer ikke i MySQL (det er en Oracle-ting). Så du skal bruge INTERVAL n unit
syntaks.
Du vil bemærke, at min WHERE-klausul ovenfor funktionelt svarer til
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Men den første formulering er bedre end den anden af to grunde.
- hvis du nævner
end_date
i en WHERE-sætning uden at pakke den ind i beregninger, kan din forespørgsel udnytte et indeks på den kolonne og kan køre hurtigere. DATE(NOW())
ogCURDATE()
begge henviser til dagens første øjeblik (midnat). MenCURDATE()
er lidt enklere.