2

有没有办法从某个日期 (24/07/2013) 在短时间内找出当前财政年度 (2013-2014)。

我试过这个

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

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

4

5 回答 5

6

由于有 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;
于 2013-07-20T13:58:17.857 回答
2
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);
于 2014-01-31T05:35:16.333 回答
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
于 2013-07-20T11:47:46.100 回答
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;

试试这个,希望这有帮助

于 2016-09-03T06:58:43.870 回答
1

对于许多人来说,财政年度从 10 月开始,这使得抵消额为 +3。借用 Noel 的代码:

提取(来自 add_months 的年份(日期 '2013-10-15',3))或提取(来自 add_months 的年份(sysdate,3))

此代码给出任何给定日期的财政年度。然后,您可以使用 +1 或 -1 年或复制代码来专门执行您要查找的操作。

于 2016-11-23T19:14:56.887 回答