НІКОЛИ не використовуйте селектор на кшталт DATE(datecolumns) = '2012-12-24'
- це вбивця продуктивності:
- він буде розрахований
DATE()
для всіх рядків, включаючи ті, які не відповідають
- це унеможливить використання індексу для запиту
Це набагато швидше у використанні
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
оскільки це дозволить використовувати індекс без розрахунку.
EDIT
Як зазначає Used_By_Already, за час, починаючи з первинної відповіді в 2012 році, з'явилися версії MySQL, де використання "23: 59: 59" як закінчення дня вже не є безпечним. Оновлена версія повинна читати
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
Суть відповіді, тобто уникнення селектора на обчисленому виразі, звичайно, все ще існує.