从oracle中的日期获取财政年度

p5fdfcr1  于 2023-01-20  发布在  Oracle
关注(0)|答案(6)|浏览(119)

有没有办法从某个日期(24/07/2013)以较短的方式找出当前财政年度(2013-2014)。
我试过这个

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

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

11dmarpk

11dmarpk1#

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

dphi5xsq2#

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);
8wtpewkr

8wtpewkr3#

这将返回基于当前日期的会计年度,因为您的会计年度在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
olmpazwi

olmpazwi4#

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;

试试这个,希望有帮助

vmjh9lq9

vmjh9lq95#

对许多人来说,财政年度从10月开始,这使得抵消为+3。借用诺埃尔的代码:
提取(年份来自add_months(日期'2013-10- 15',3))或提取(年份来自add_months(系统日期,3))
这个代码给出了任何给定日期的财政年度。然后你可以使用+1或-1年或复制代码来做具体的你正在寻找的。

cwdobuhd

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);

相关问题