Sepertinya Anda ingin baris dengan end_date
lebih lambat dari lima hari yang lalu.
Cara terbaik untuk mendapatkannya adalah dengan
WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Bisnis menambahkan bilangan bulat ke tanggal tidak berfungsi di MySQL (ini adalah hal Oracle). Jadi, Anda perlu menggunakan INTERVAL n unit
sintaks.
Anda akan melihat bahwa klausa WHERE saya di atas secara fungsional setara dengan
WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Tapi, formulasi pertama lebih unggul dari yang kedua karena dua alasan.
- jika Anda menyebutkan
end_date
dalam klausa WHERE tanpa membungkusnya dalam perhitungan, kueri Anda dapat mengeksploitasi indeks pada kolom tersebut dan dapat berjalan lebih cepat. DATE(NOW())
danCURDATE()
keduanya merujuk pada momen pertama hari ini (tengah malam). TapiCURDATE()
sedikit lebih sederhana.