PL/SQL Первый и последний день недели, месяца, года и т.д

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;