Sembra che si sta cercando di fare questo:
WHERE specific_date < (NOW() + 5 days)
Prima di tutto, pensare con attenzione i casi limite. Questi casi limite possono mordere le caviglie in SQL. Ti vuole realmente
WHERE specific_date <= (NOW() + 5 days)
I tuoi specific_date
colonne timestamp contengono solo giorni (vale a dire le date con tempi uguali a mezzanotte) o se invece contengono date e gli orari? Se hai intenzione di ottenere i risultati desiderati, devi fare attenzione a quei dettagli.
In ogni caso, provate questo:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Questo è un buon modo per fare una ricerca. Il valore della colonna si trova da solo su un lato del predicato di disuguaglianza (<=
), quindi mySQL può eseguire una scansione dell'indice se si dispone di un indice sulla colonna.
L'aritmetica delle date in MySQL è piuttosto flessibile. È possibile fare
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.
fonte
2011-10-10 12:37:58
Sì grazie, ha funzionato. – sathish
Funziona anche con ore? ad esempio: 'WHERE specific_date <= DATE_ADD (NOW(), INTERVAL 24 ORE)' –
Sì, vedere la mia modifica. –