Когда делает «неделю» начать? Воскресенье? Понедельник? В тот же день недели, что и сегодня?
Предполагая, что вы счастливы последний вариант, это сделать:
SELECT ...
WHERE date >= CURDATE() - INTERVAL $n WEEK
AND date < CURDATE() - INTERVAL $n-1 WEEK
Пример
mysql> SELECT CURDATE(), CURDATE() - INTERVAL 9 WEEK, CURDATE() - INTERVAL 9-1 WEEK;
+------------+-----------------------------+-------------------------------+
| CURDATE() | CURDATE() - INTERVAL 9 WEEK | CURDATE() - INTERVAL 9-1 WEEK |
+------------+-----------------------------+-------------------------------+
| 2015-02-22 | 2014-12-21 | 2014-12-28 |
+------------+-----------------------------+-------------------------------+
Если вам нужна неделя, чтобы начать на конкретном ДОУ, запрос является хаотичным, путем дальнейшего вычитая INTERVAL DAYOFWEEK(CURDATE()) DAY
. И это может быть немного.
Начало текущей недели (при условии, что это воскресенье): CURDATE() - INTERVAL (WEEKDAY(CURDATE() + INTERVAL 1 DAY))
. Итак, замените CURDATE()
в вышеупомянутом выражении (дважды) с этим длинным беспорядком.
Возможный дубликат [Выбрать записи за одну неделю назад в mysql] (http://stackoverflow.com/questions/7391718/select-records-from-one-week-previous-in-mysql) – walther