Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从oracle中的日期获取财政年度_Oracle - Fatal编程技术网

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

从oracle中的日期获取财政年度,oracle,Oracle,有没有办法从一个日期(2013年7月24日)以简短的方式找出当前财政年度(2013-2014年) 我试过这个 select extract(year from report_date)||' - '|| extract(year from report_date) + 1 year from bdpr_swtch_yrd 除此之外,如果我能找到,所选日期属于哪个季度。鉴于您的会计年度截止日期为3月31日,这将返回基于当前日期的会计年度: SELECT EXTRACT(YE

有没有办法从一个日期(2013年7月24日)以简短的方式找出当前财政年度(2013-2014年)

我试过这个

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

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

鉴于您的会计年度截止日期为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

鉴于您的会计年度截止日期为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

因为有3个月的抵销,所以应该从当前日期减去3个月,然后提取年份

SELECT    EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -3))
       || '-'
       || EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, 9))
  FROM DUAL;
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')
输出:
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日。有几种方法可以做到这一点。我将继续采用与上面相同的方法,因为我们已经有了一年的时间

SELECT    EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -3))
       || '-'
       || EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, 9))
  FROM DUAL;
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;

因为有3个月的抵销,所以应该从当前日期减去3个月,然后提取年份

SELECT    EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -3))
       || '-'
       || EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, 9))
  FROM DUAL;
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')
输出:
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日。有几种方法可以做到这一点。我将继续采用与上面相同的方法,因为我们已经有了一年的时间

SELECT    EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, -3))
       || '-'
       || EXTRACT (YEAR FROM ADD_MONTHS (SYSDATE, 9))
  FROM DUAL;
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 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 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);
试试这个,希望对你有帮助


试试看,希望这能对很多人有所帮助。

对于很多人来说,财政年度从10月份开始,这将抵消+3。借用Noel的代码:

摘录(从添加月份起的年份(日期'2013-10-15',3)) 或 摘录(添加月份后的年份(系统日期,3))


此代码给出任何给定日期的会计年度。然后,您可以使用+1年或-1年,或者复制代码,以完成您需要的特定任务。

对于许多人来说,会计年度从10月份开始,这将抵消+3。借用Noel的代码:

摘录(从添加月份起的年份(日期'2013-10-15',3)) 或 摘录(添加月份后的年份(系统日期,3))


此代码给出任何给定日期的会计年度。然后,您可以使用+1年或-1年或复制代码来具体执行所需操作。

这不取决于财政年度的结束时间吗?例如,如果财政年度结束于6月30日(这并不少见),则逻辑将根据报告日期是在6月30日之前还是之后而有所不同。例如,如果报告日期为2013年4月15日,则应为2012-2013财年。但如果报告数据是2013年10月1日,那么应该是2013-2014财年。我这里指的是4月1日至3月31日的财年。财年或日历季度?同一财年……这不取决于财年结束的时间吗?例如,如果财政年度结束于6月30日(这并不少见),则逻辑将根据报告日期是在6月30日之前还是之后而有所不同。例如,如果报告日期为2013年4月15日,则应为2012-2013财年。但是如果报告数据是2013年10月1日,那么它应该是2013-2014财年。我这里指的是4月1日至3月31日的财年。财务季度还是日历季度?相同的财务季度……谢谢你的回答。这只是返回下一个财政年度(即2014年),但我想要的是财政年度(即2013-2014年),以防日期介于2013年4月1日至2014年3月31日之间,同样,下一个财政年度也是如此……谢谢你的回答。这只是返回下一个财政年度(即2014年),但我想要的是财政年度(即2013-2014年),以防某个日期介于2013年4月1日至2014年3月31日之间,同样地,对于下一个……亲爱的,有没有办法根据某个日期查找整个财政年度的所有记录。亲爱的,是否有一种方法可以根据日期查找整个财政年度的所有记录。