Хоча всі відповіді на сторінці повернуть бажаний результат, усі вони мають проблеми з ефективністю. Ніколи не виконуйте обчислення на полях у WHERE
пункті (включаючи DATE()
обчислення), оскільки цей обчислення повинен виконуватися у всіх рядках таблиці.
BETWEEN ... AND
Конструкт включно для обох граничних умов, що вимагає один , щоб вказати 23:59:59 синтаксису на дату закінчення , який сам має інші проблеми (мікросекунди угоду, які я вважаю , MySQL не підтримує в 2009 році , коли було поставлено питання).
Правильний спосіб запиту timestamp
поля MySQL для конкретного дня - це перевірити наявність Greater Than-Equals на бажану дату, а на менший - ніж на наступний день, без вказаної години.
WHERE datetime>='2009-10-20' AND datetime<'2009-10-21'
Це найшвидший метод, що має найменший обсяг пам’яті, найменш ресурсомісткий метод, а також підтримує всі функції MySQL та кутові випадки, такі як точність часової позначки під секунду. Крім того, це майбутній доказ.