หากคุณต้องการเลือกแถวทั้งหมดที่ส่วน DATE ของคอลัมน์ DATETIME ตรงกับตัวอักษรบางตัวคุณจะไม่สามารถทำได้:
WHERE startTime = '2010-04-29'
เนื่องจาก MySQL ไม่สามารถเปรียบเทียบ DATE และ DATETIME ได้โดยตรง สิ่งที่ MySQL ทำมันขยาย DATE literal ที่กำหนดด้วยเวลา '00: 00: 00 ' สภาพของคุณจึงกลายเป็น
WHERE startTime = '2010-04-29 00:00:00'
ไม่ใช่สิ่งที่คุณต้องการอย่างแน่นอน!
เงื่อนไขเป็นช่วงดังนั้นจึงควรกำหนดเป็นช่วง มีความเป็นไปได้หลายประการ:
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)
มีความเป็นไปได้เล็กน้อยที่คนแรกจะผิด - เมื่อคอลัมน์ DATETIME ของคุณใช้ความละเอียดรองและมีการนัดหมายเวลา 23:59:59 น. + epsilon โดยทั่วไปฉันแนะนำให้ใช้ตัวแปรที่สอง
ตัวแปรทั้งสองสามารถใช้ดัชนีใน startTime ซึ่งจะมีความสำคัญเมื่อตารางเติบโตขึ้น