Sebagai ekstensi untuk jawaban dari @sabin dan sebuah petunjuk jika seseorang ingin membandingkan bagian tanggal saja (tanpa waktu):
Jika bidang untuk dibandingkan adalah dari tipe datetime dan hanya tanggal yang ditentukan untuk perbandingan, maka tanggal ini secara internal dikonversi ke nilai datetime . Ini berarti permintaan berikut
SELECT * FROM `objects` WHERE (date_time_field BETWEEN '2010-01-30' AND '2010-09-29')
akan dikonversi menjadi
SELECT * FROM `objects` WHERE (date_time_field BETWEEN '2010-01-30 00:00:00' AND '2010-09-29 00:00:00')
secara internal.
Ini pada gilirannya mengarah ke hasil yang tidak termasuk objek dari 2010-09-29 dengan nilai waktu lebih besar dari 00:00:00!
Dengan demikian, jika semua objek dengan tanggal 2010-09-29 harus disertakan juga, bidang untuk membandingkan harus dikonversi ke tanggal:
SELECT * FROM `objects` WHERE (DATE(date_time_field) BETWEEN '2010-01-30' AND '2010-09-29')
min
dan keduanyamax
dianggap berada dalam kisaran, untuk tidak memproses dua kali tanggal yang merupakan nilaimin
danmax
(kasus tepi). Misalnya, tanggalnya2010-09-29 00:00:00
akan antara2010-09-28 00:00:00
dan2010-09-29 00:00:00
, DAN JUGA antara2010-09-29 00:00:00
dan2010-09-30 00:00:00