2015-02-23 2 views
-1

Итак, я могу сделать следующее, чтобы получить данные с прошлой недели.MySQL Извлечь данные из любой предыдущей недели

select * from table where week(date)=week(curdate())-1 

То же самое в течение 2 недель назад. Но это не удается, если данные находятся в предыдущем году. Какой запрос я могу использовать для получения данных из n недель назад, независимо от того, к какому году относятся данные.

Edit: Неделя начинается в воскресенье 12 утра и заканчивается суббота 11:59 вечера

+0

Возможный дубликат [Выбрать записи за одну неделю назад в mysql] (http://stackoverflow.com/questions/7391718/select-records-from-one-week-previous-in-mysql) – walther

ответ

0

Когда делает «неделю» начать? Воскресенье? Понедельник? В тот же день недели, что и сегодня?

Предполагая, что вы счастливы последний вариант, это сделать:

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() в вышеупомянутом выражении (дважды) с этим длинным беспорядком.

+0

Спасибо. Отредактированный вопрос, чтобы заявить, что неделя в любое время между воскресенью и субботой, независимо от того, что сегодня происходит. – user2029890

+0

Добавлено, как начать неделю в воскресенье. Теперь мой мозг болит. ;) –

+0

Спасибо. По какой-то причине я продолжаю получать синтаксические ошибки. Не знаю, где я ошибаюсь. – user2029890

Смежные вопросы