Выбор даты с текущей недели с понедельника по следующее воскресенье - PullRequest
0 голосов
/ 30 октября 2019

У меня есть этот запрос, и я могу взять даты из моей таблицы, начиная с понедельника текущей недели. Мое намерение состоит в том, чтобы собранные даты были с понедельника до предстоящего воскресенья. Ниже мой запрос

SELECT * 
FROM spec_roaster
WHERE DATE(date)
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW())+ 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL (WEEKDAY(NOW())+ 7) % 7 DAY)
ORDER BY date ASC

Возвращенные результаты:

enter image description here

Я пытался изменить интервал для DATE_ADD, ноЯ всегда возвращаюсь в четверг на этой неделе. Можно ли как-то изменить интервал, чтобы он возвращал даты до следующего воскресенья? Я пробовал

INTERVAL 6 - (WEEKDAY(NOW()) - 4 + 7) % 7 DAY)

, но изменений не было, я также пытался использовать DATEDIFF, но это приводило к ошибкам синтаксиса. Я надеюсь услышать некоторые идеи о том, как я могу подойти к решению этой проблемы. Заранее спасибо!

1 Ответ

1 голос
/ 30 октября 2019

Следующий запрос даст вам наступающее воскресенье в формате Ymd.

SELECT curdate() + Interval 6 - weekday(curdate()) DAY;

Чтобы получить понедельник, вы можете использовать

SELECT curdate() - Interval weekday(curdate()) DAY;

Так что в основном вам нужно использовать эти 2 даты и получитьвсе записи между ними. Таким образом, ваш запрос будет

SELECT * 
FROM spec_roaster
WHERE DATE BETWEEN 
(curdate() - Interval weekday(curdate()) DAY) 
AND 
( SELECT curdate() + Interval 6 - weekday(curdate()) DAY )
...