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

Query Mysql Datediff

Sembra che tu stia cercando di farlo:

WHERE specific_date < (NOW() + 5 days)

Prima di tutto, pensa attentamente ai casi limite. Questi casi limite possono morderti le caviglie in SQL. Vuoi davvero

WHERE specific_date <= (NOW() + 5 days)

Scrivi la tua specific_date le colonne timestamp contengono solo giorni (ovvero date con orari uguali a mezzanotte) o contengono date e orari? Se vuoi ottenere i risultati che desideri, devi prestare attenzione a questi dettagli.

Ad ogni modo, prova questo:

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

Questo è un buon modo per eseguire una tale ricerca. Il valore della colonna si trova da solo su un lato del predicato di disuguaglianza (il <= ) in modo che MySQL possa eseguire una scansione dell'intervallo di indici se hai un indice nella colonna.

L'aritmetica delle date in MySQL è abbastanza flessibile. Puoi farlo

   NOW() + INTERVAL 10 SECOND
   NOW() - INTERVAL 2 MINUTE
   NOW() + INTERVAL 4 HOUR
   CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
   LAST_DAY(NOW()) + INTERVAL 1 DAY - INTERVAL 1 MONTH  /*first day of present month*/
   NOW() - INTERVAL 1 QUARTER
   CURDATE() - INTERVAL 5 YEAR

e così via.