Как получить данные за прошлую неделю, месяц, и т.д в mysql?

Вот например за последние 7 дней понятно как
SELECT * FROM t WHERE date> NOW() - INTERVAL 7 DAY;


А вот как получить данные только за прошлую неделю и за прошлый месяц?
  • Вопрос задан
  • 11958 просмотров
Решения вопроса 1
Rattlesneyk
@Rattlesneyk Автор вопроса
select id 
from tab 
where real_time > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
  AND real_time < DATE_ADD(LAST_DAY(CURDATE() - INTERVAL 1 MONTH), INTERVAL 1 DAY);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
ну вычислите даты начала и конца прошлой недели или прошлого месяца, и выбирайте where date between date1 and date2
Ответ написан
Комментировать
@heartdevil
плыву как воздушный шарик
Привет.

Вот так можно вычислить периоды

В неделю:

SELECT CURDATE() - INTERVAL CASE WHEN DAYOFWEEK(CURDATE()) = 1 THEN 13 ELSE DAYOFWEEK(CURDATE()) + 5 END DAY -- start of the previous week
SELECT CURDATE() - INTERVAL CASE WHEN DAYOFWEEK(CURDATE()) = 1 THEN 6 ELSE DAYOFWEEK(CURDATE()) - 1 END DAY -- end of the previous week


В месяц

SELECT DATE_ADD(CURDATE(), INTERVAL - DAYOFMONTH(CURDATE()) DAY) -- end of the previous month

SELECT DATE_ADD(DATE_ADD(CURDATE(), INTERVAL - DAYOFMONTH(CURDATE()) DAY), INTERVAL - DAYOFMONTH(DATE_ADD(CURDATE(), INTERVAL - DAYOFMONTH(CURDATE()) DAY)) + 1 DAY) -- start of the previous month
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы