公司使用今年7月1日到次年的6月30日作为会计年度,在1月1日的年度被参照。例如,2014年5月20日是2014财年,2014年7月21日是2015财年。我必须显示hire_date
以及会计年度(当年只有4位数)。
Hire_date
01-jun-98
16-aug-99
02-feb-09
01-mar-06
01-dec-08
17-mar-99
16-feb-07
答案 0 :(得分:0)
您的会计年度比日历年提前了六个月,因此您可以添加六个月(到月的第一天以避免在月末发生任何奇怪或过时的日期),并查看哪一年是:
select hire_date,
extract(year from add_months(trunc(hire_date, 'MM'), 6)) as fiscal_year
from t42
order by hire_date;
HIRE_DATE FISCAL_YEAR
--------- -----------
01-dec-08 2009
01-jun-98 1998
01-mar-06 2006
02-feb-09 2009
16-aug-99 2000
16-feb-07 2007
17-mar-99 1999
您可以使用extract()
和case
,类似于Andrew暗示的内容:
select hire_date,
extract(year from hire_date)
+ case when extract(month from hire_date) >= 7 then 1
else 0 end as fiscal_year
from t42
order by hire_date;
答案 1 :(得分:0)
的工作。我正准备发布我所做的事情,这也有效。
Select Hire_data,
case
when extract(Month from Hire_date)>=7 then
extract(year from Hire_date)+1
else extract(year from Hire_date)
end as Fiscal
from x;