由于有3个月的抵消,你应该从当前日期减去3个月,然后提取年份。
SELECT EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -3))
|| '-'
|| EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, 9))
FROM DUAL;
输出:2013-2014
SELECT EXTRACT (YEAR FROM ADD_MONTHS (DATE '2013-03-31', -3))
|| '-'
|| EXTRACT (YEAR FROM ADD_MONTHS (DATE '2013-03-31', 9))
FROM DUAL;
输出:2012-2013
编辑:
要找到在财政年度的所有记录,首先你需要找到的开始和结束该财政年度的日期始终是4月1日和3月31日。有几种方法可以实现这一点。我将继续采用与上述相同的方法,因为我们已经有了这一年。
Start_date:= to_date('01-04-'||EXTRACT (YEAR FROM ADD_MONTHS (reference_date, -3)),'dd-mm-yyyy')
End_date := to_date('01-04-'||EXTRACT (YEAR FROM ADD_MONTHS (reference_date, 9)),'dd-mm-yyyy')
所以,你的where子句应该看起来像这样。
select * from table_name
where column_name between Start_date and End_date;