从oracle的日期获得财政年度

时间:2013-07-20 10:42:43

标签: oracle

有没有办法从日期(2013年7月24日)开始,以短暂的方式找出当前财政年度(2013-2014)。

我试过这个

select extract(year from report_date)||' - '|| 
       extract(year from report_date) + 1 year 
  from bdpr_swtch_yrd

除此之外,如果我能找到,所选日期属于哪个季度。

5 个答案:

答案 0 :(得分:4)

由于存在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;

答案 1 :(得分:1)

鉴于您的会计年度将于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

答案 2 :(得分:1)

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 :(得分:1)

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;

试试这个,希望这有帮助

答案 4 :(得分:1)

对于许多人来说,会计年度从10月开始,其抵消额为+3。借用诺埃尔的代码:

摘录(年份来自add_months(日期' 2013-10-15',3)) 要么 extract(来自add_months(sysdate,3)的年份)

此代码给出了任何给定日期的会计年度。然后你可以使用+1或-1年或复制代码来专门做你想要的。