За сегодня:
createdate>= CURDATE()";
За вчера:
createdate>= (INTERVAL -1 DAY + curdate()) AND createdate < CURDATE()
За неделю:
createdate > DATE_SUB(CURDATE(), INTERVAL (DAYOFWEEK(CURDATE()) -1) DAY) AND messagedate < DATE_ADD(CURDATE(), INTERVAL (9 - DAYOFWEEK(CURDATE())) DAY)
За месяц:
createdate > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))AND messagedate< DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY)
>>За вчера:
не работает 1 числа каждого месяца
mysql> select curdate();
+————+
| curdate() |
+————+
| 2013-07-01 |
+————+
1 row in set (0.00 sec)
mysql> select curdate()-1;
+————-+
| curdate()-1 |
+————-+
| 20130700 |
+————-+
1 row in set (0.00 sec)
Тогда как вариант
SELECT INTERVAL -1 DAY + curdate();