Sepertinya Anda mencoba melakukan ini:
WHERE specific_date < (NOW() + 5 days)
Pertama-tama, pikirkan baik-baik tentang kasus batas. Kasus batas ini dapat menggigit pergelangan kaki Anda dalam SQL. Apakah Anda benar-benar ingin
WHERE specific_date <= (NOW() + 5 days)
Lakukan specific_date
stempel waktu kolom hanya berisi hari (yaitu tanggal dengan waktu sama dengan tengah malam) atau apakah berisi tanggal dan waktu? Jika Anda ingin mendapatkan hasil yang diinginkan, Anda harus berhati-hati dengan detail tersebut.
Bagaimanapun, coba ini:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)
Ini adalah cara yang baik untuk melakukan pencarian seperti itu. Nilai kolom berdiri sendiri pada salah satu sisi predikat pertidaksamaan (<=
) sehingga mySQL dapat melakukan pemindaian rentang indeks jika Anda memiliki indeks di kolom.
Aritmatika tanggal di MySQL cukup fleksibel. Anda dapat melakukan
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
dan seterusnya.