Sembra che tu voglia righe in cui end_date
è più tardi di cinque giorni fa.
Il modo migliore per ottenerlo è con
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
L'attività di aggiungere numeri interi alle date non funziona in MySQL (è una cosa Oracle). Quindi devi usare l' INTERVAL n unit
sintassi.
Noterai che la mia clausola WHERE sopra è funzionalmente equivalente a
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Ma la prima formulazione è superiore alla seconda per due motivi.
- se menzioni
end_date
in una clausola WHERE senza avvolgerla nei calcoli, la tua query può sfruttare un indice su quella colonna e può essere eseguita più velocemente. DATE(NOW())
eCURDATE()
entrambi si riferiscono al primo momento di oggi (mezzanotte). MaCURDATE()
è un po' più semplice.