Мы уже рассматривали как получить начало месяца и квартала в t-SQL. Сейчас покажу как это сделать в Oracle.
В Oracle сделать это намного проще c помощью встроенной функции trunc:
select trunc(sysdate, 'MM') as monthStart , trunc(sysdate, 'Q') as quarterStart from dual
Функция в Oracle для начала месяца может выглядеть так:
create or replace function monthStart(inputDate in date) return date as begin return trunc(inputDate, 'MM'); end;
Применение функции:
Функция для начала квартала:
create or replace function quarterStart(inputDate in date) return date as begin return trunc(inputDate, 'Q'); end;
Применение функции:
С помощью функции trunc можно не только получать начало периода, но и отсекать дробную часть числа.