Get first_day and last_day in oracle
create or replace FUNCTION system.f_day(value_in DATE)
RETURN DATE IS
vMo VARCHAR2(2);
vYr VARCHAR2(4);
BEGIN
vMo := TO_CHAR(value_in, 'MM');
vYr := TO_CHAR(value_in, 'YYYY');
RETURN TO_DATE(vMo || '-01-' || vYr, 'MM-DD-YYYY');
EXCEPTION
WHEN OTHERS THEN
RETURN TO_DATE('01-01-1900', 'MM-DD-YYYY');
END f_day;
CREATE OR REPLACE PUBLIC SYNONYM first_day FOR system.f_day;
select first_day(trunc(sysdate,'MM')-1),last_day(trunc(sysdate,'MM')-1)
from dual;