PL/SQL Первый и последний день недели, месяца, года и т.д
Для нахождения первого дня недели, месяца, года, квартала следует использовать функцию TRUNC с использованием определенных флагов.
select trunс(sysdate,’mm’) from dual
— первый день месяца
select trunс(sysdate,’D’) from dual
— первый день недели (различается в разных странах, зависит от параметра NLS_TERRITORY)
Последний день месяца можно найти функцией LAST_DAY. Учтите, что функция LAST_DAY не изменяет временную часть значения.
select LAST_DAY(to_date(sysdate, 'dd.mm.yyyy')) from dual;
Для получения последнего дня года или квартала можно использовать комбинацию из функций TRUNC, ADD_MONTHS и обычной арифметики. Последний день квартала:
select trunc(add_months(sysdate, 3), 'Q')-1 from dual;
Последний день года:
select trunc(add_months(sysdate, 12), 'YYYY')-1 from dual;