有没有办法从某个日期 (24/07/2013) 在短时间内找出当前财政年度 (2013-2014)。
我试过这个
select extract(year from report_date)||' - '||
extract(year from report_date) + 1 year
from bdpr_swtch_yrd
除此之外,如果我能找到,所选日期属于哪个季度。
有没有办法从某个日期 (24/07/2013) 在短时间内找出当前财政年度 (2013-2014)。
我试过这个
select extract(year from report_date)||' - '||
extract(year from report_date) + 1 year
from bdpr_swtch_yrd
除此之外,如果我能找到,所选日期属于哪个季度。
由于有 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;
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);
鉴于您的财政年度于 3 月 31 日结束,这应该基于当前日期返回财政年度:
SELECT
EXTRACT(YEAR FROM sysdate) + DECODE(SIGN(TO_CHAR(sysdate, 'MM') - 3), -1, 0, 1)
AS FISCAL_YEAR
FROM DUAL
这应该返回当前日期的季度:
SELECT to_char(sysdate, 'Q')
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;
试试这个,希望这有帮助
对于许多人来说,财政年度从 10 月开始,这使得抵消额为 +3。借用 Noel 的代码:
提取(来自 add_months 的年份(日期 '2013-10-15',3))或提取(来自 add_months 的年份(sysdate,3))
此代码给出任何给定日期的财政年度。然后,您可以使用 +1 或 -1 年或复制代码来专门执行您要查找的操作。