One of the first rules you would learn about MySQL Performance Optimization is to avoid using functions when comparing constants or order by. Ie use indexed_col=N is good. function(indexed_col)=N is bad because MySQL Typically will be unable to use index on the column even if function is very simple such as arithmetic operation. Same can apply to order by, if you would like that to use the index for sorting. There are however some interesting exception.
Compare those two queries for example. If you look only at ORDER BY clause you would see first query which sorts by function is able to avoid order by while second which uses direct column value needs to do the filesort:
PLAIN TEXT SQL:
- mysql> EXPLAIN SELECT * FROM tst WHERE i=5 AND date(d)=date(now()) ORDER BY date(d) \G
- *************************** 1. row ***************************
- …