Часто на практике встречается задача вычисления первого и последнего воскресенья месяца.
Рассмотрим вариант решения этой задачи на MySQL,
SELECT DATE_SUB(`dates`.`date`,INTERVAL DAY(`dates`.`date`)-1 DAY) as firstDay, LAST_DAY(`dates`.`date`) as lastDay, DATE_ADD(DATE_SUB(`dates`.`date`,INTERVAL DAY(`dates`.`date`)-1 DAY),INTERVAL 6-WEEKDAY(DATE_SUB(`dates`.`date`,INTERVAL DAY(`dates`.`date`)-1 DAY)) DAY) as firstSunday, DATE_SUB(LAST_DAY(`dates`.`date`),INTERVAL (WEEKDAY(LAST_DAY(`dates`.`date`))+1)%7 DAY)as lastSunday FROM ( SELECT '2021-05-16' `date` ) `dates`
В данном примере определение осуществляется относительно первого и последнего дня месяца, путем добавления и вычитания соответствующего количества дней.