NIKDY použijte selektor jako DATE(datecolumns) = '2012-12-24'
- je to zabiják výkonu:
- vypočítá
DATE()
pro všechny řádky, včetně těch, které se neshodují - znemožní použití indexu pro dotaz
Používání je mnohem rychlejší
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
protože to umožní použití indexu bez výpočtu.
UPRAVIT
Jak upozornil Used_By_Already, v době od první odpovědi v roce 2012 se objevily verze MySQL, kde už není bezpečné používat '23:59:59' jako konec dne. Aktualizovaná verze by měla číst
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
Podstata odpovědi, tedy vyhýbání se selektoru na vypočítaném výrazu, samozřejmě stále platí.