я использую
WHERE WEEK(curdate,3)-WEEK(date)=1
чтобы получить все строки таблицы, записанные за последнюю рабочую неделю (с понедельника по воскресенье). Работает хорошо в течение всего года, но в январе это вернет 0 на некоторое время, поэтому я должен принять
WHERE WEEK(curdate,3)+53-WEEK(date)
в таком случае. Я не могу использовать OR
, потому что потребуется информация как за текущий год, так и за последний год, когда они оба существуют. Я уже пробовал методы COALESCE
и IFNULL
:
WHERE COALESCE(
(WEEK(curdate(),3)-WEEK(date,3) = 1),
(WEEK(curdate(),3)+53-WEEK(date,3) = 1
)
Он хорошо работает в течение всего года, но не справляется со случаем, когда IFNULL
верно. Пожалуйста, дайте мне совет по эффективному решению этого дела.