Jika Anda ingin memilih semua baris di mana bagian DATE dari kolom DATETIME cocok dengan literal tertentu, Anda tidak dapat melakukannya seperti ini:
WHERE startTime = '2010-04-29'
karena MySQL tidak dapat membandingkan DATE dan DATETIME secara langsung. Apa yang dilakukan MySQL, itu memperpanjang literal DATE yang diberikan dengan waktu '00: 00: 00 '. Jadi kondisimu menjadi
WHERE startTime = '2010-04-29 00:00:00'
Tentu bukan yang Anda inginkan!
Kondisinya adalah kisaran dan karenanya harus diberikan sebagai kisaran. Ada beberapa kemungkinan:
WHERE startTime BETWEEN '2010-04-29 00:00:00' AND '2010-04-29 23:59:59'
WHERE startTime >= '2010-04-29' AND startTime < ('2010-04-29' + INTERVAL 1 DAY)
Ada kemungkinan kecil untuk kesalahan pertama - ketika kolom DATETIME Anda menggunakan resolusi sub-detik dan ada janji temu pada pukul 23:59:59 + epsilon. Secara umum saya menyarankan untuk menggunakan varian kedua.
Kedua varian dapat menggunakan indeks pada startTime yang akan menjadi penting saat tabel berkembang.