Якщо ви хочете вибрати всі рядки, де частина DATE стовпця DATETIME відповідає певному літералу, ви не можете зробити це так:
WHERE startTime = '2010-04-29'
оскільки MySQL не може безпосередньо порівняти ДАТУ і ДАТУ. Те, що робить MySQL, розширює даний літерал DATE з часом '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, що стане важливим, коли таблиця зростатиме.