Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso aggiungere giorni a una data in MySQL in una query

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.

  1. 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.
  2. DATE(NOW()) e CURDATE() entrambi si riferiscono al primo momento di oggi (mezzanotte). Ma CURDATE() è un po' più semplice.