Oracle SQL – Fiscal Year Dynamic Function

dateoraclequery

My Fiscal Year starts on 1st October (2017) and ends 30th September (2018)

I want to write a function that will dynamically calculate first day of October.

Currently I have:

select Add_Months(Trunc(Add_Months(sysdate,3),'YYYY'), -3) from dual

Best Answer

Lots of ways of doing this. But here's one:

-- should be 2012
SELECT   (EXTRACT (YEAR FROM ADD_MONTHS (DATE '2013-09-30', -9))||'-10-01') from dual;

-- should be 2013
SELECT   (EXTRACT (YEAR FROM ADD_MONTHS (DATE '2013-10-01', -9))||'-10-01') from dual;

-- should be 2018
SELECT   (EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -9))||'-10-01') from dual;

Just needs a TO_DATE().

Fiddle link.