Хотя все ответы на странице вернут желаемый результат, все они имеют проблемы с производительностью. Никогда не выполняйте вычисления для полей в предложении WHERE
(включая вычисление DATE()
), так как это вычисление должно выполняться для всех строк в таблице.
Конструкция BETWEEN ... AND
включает в себя оба граничных условия, требующих указания синтаксиса 23:59:59 на дату окончания, что само по себе имеет другие проблемы (микросекундные транзакции, которые, как я считаю, MySQL не поддерживал в 2009 году, когда был задан вопрос).
Правильный способ запросить поле MySQL timestamp
для определенного дня - это проверить значения «Больше-равно-равно» для требуемой даты и «Меньше, чем» на следующий день, без указания часа.
WHERE datetime>='2009-10-20' AND datetime<'2009-10-21'
Это самый быстродействующий метод с наименьшим объемом памяти и наименьшими ресурсами, который дополнительно поддерживает все функции MySQL и такие примеры, как точность отметки времени менее секунды. Кроме того, это будущее.