Nếu bạn muốn chọn tất cả các hàng trong đó phần DATE của cột DATETIME khớp với một chữ nhất định, bạn không thể làm như vậy:
WHERE startTime = '2010-04-29'
vì MySQL không thể so sánh trực tiếp DATE và DATETIME. MySQL làm gì, nó mở rộng chữ DATE đã cho với thời gian '00: 00: 00 '. Vì vậy, tình trạng của bạn trở thành
WHERE startTime = '2010-04-29 00:00:00'
Chắc chắn không phải những gì bạn muốn!
Điều kiện là một phạm vi và do đó nó phải được cung cấp dưới dạng phạm vi. Có một số khả năng:
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)
Có một khả năng nhỏ là sai lầm đầu tiên - khi cột DATETIME của bạn sử dụng độ phân giải giây con và có một cuộc hẹn lúc 23:59:59 + epsilon. Nói chung, tôi đề nghị sử dụng biến thể thứ hai.
Cả hai biến thể đều có thể sử dụng một chỉ mục trên startTime sẽ trở nên quan trọng khi bảng phát triển.