SELECT CASE
WHEN TO_CHAR (indate, 'MMdd') > '0331'
THEN to_char(indate,'yyyy')
ELSE to_char(to_number(to_char(indate,'yyyy'))-1)
END AS FY
FROM DUAL;
对于其他格式:
select FY||'-'||(FY+1) as FY,FY||'-'||substr((FY+1),3,2) as FYN from (
SELECT CASE
WHEN TO_CHAR (sysdate, 'MMdd') > '0331'
THEN to_char(sysdate,'yyyy')
ELSE to_char(to_number(to_char(sysdate,'yyyy'))-1)
END AS FY
FROM DUAL);
SELECT SYSDATE,CASE
WHEN TO_CHAR (SYSDATE, 'MMdd') > '0331'
THEN to_char(SYSDATE,'yyyy')||'-'||to_char(to_number(to_char(SYSDATE,'yyyy'))+1)
ELSE to_char(to_number(to_char(SYSDATE,'yyyy'))-1)||'-'||to_char(SYSDATE,'yyyy')
-- to_char(to_number(to_char(SYSDATE,'yyyy'))-1)
END AS FY
FROM DUAL;
6条答案
按热度按时间11dmarpk1#
由于存在3个月的偏移量,因此应从当前日期减去3个月,然后提取年份。
输出:
2013-2014
输出:
2012-2013
要查找财政年度中的所有记录,首先需要查找财政年度的开始日期和结束日期,通常为4月1日和3月31日。有几种方法可以获得此信息。由于我们已经获得了年度,因此我将继续使用上述相同的方法。
因此,where子句应该如下所示。
dphi5xsq2#
对于其他格式:
8wtpewkr3#
这将返回基于当前日期的会计年度,因为您的会计年度在3月31日结束:
这将返回当前日期的季度:
olmpazwi4#
试试这个,希望有帮助
vmjh9lq95#
对许多人来说,财政年度从10月开始,这使得抵消为+3。借用诺埃尔的代码:
提取(年份来自add_months(日期'2013-10- 15',3))或提取(年份来自add_months(系统日期,3))
这个代码给出了任何给定日期的财政年度。然后你可以使用+1或-1年或复制代码来做具体的你正在寻找的。
cwdobuhd6#
选择"01 - 04"||"--"||财政年度为SFNY,'31 - 03'||"--"||(财政年度+1)作为财政年度,由(
当to_char(系统日期,'MMdd ')〉' 0331 '时选择大小写,则to_char(系统日期,'yyyy')否则to_char(to_number(to_char(系统日期,'yyyy '))-1)END AS FY FROM DUAL);