Sql 会计年度日期序列生成

Sql 会计年度日期序列生成,sql,oracle,plsql,oracle11g,Sql,Oracle,Plsql,Oracle11g,我有一个名为“会计年度”的表,其中包含“开始日期”、“结束日期”列(空表),我希望在2060年之前插入每个会计年度的记录 Decription start_date end_date FISCAL YEAR 2000 7/1/1999 6/30/2000 会计年度开始日期为7月1日,结束日期为明年6月31日 我试过的 select add_months(start_date ,-6),add_months

我有一个名为“会计年度”的表,其中包含“开始日期”、“结束日期”列(空表),我希望在2060年之前插入每个会计年度的记录

 Decription              start_date        end_date  
 FISCAL YEAR 2000     7/1/1999              6/30/2000   
会计年度开始日期为7月1日,结束日期为明年6月31日

我试过的

select  add_months(start_date ,-6),add_months(start_date ,6)-1 from (
select to_date('20000101','yyyymmdd') start_date from dual )
 basis 
到2060年我如何生成这个序列

 Decription              start_date        end_date  
 FISCAL YEAR 2000     7/1/1999              6/30/2000   
SQL>select
2截止日期('01-07-'| |(1999+rownum),'dd.mm.yyyy')开始日期,
3截止日期('30-06-'| |(2000+rownum),'dd.mm.yyyy')完成日期
4来自双

5按级别连接您可以这样做:

SELECT 
   ADD_MONTHS(DATE '1999-07-01', 12*(LEVEL-1)) as fiscal_year_begin,
   ADD_MONTHS(DATE '1999-07-01', 12*LEVEL) - INTERVAL '1' DAY AS fiscal_year_end
FROM dual
CONNECT BY LEVEL < 60;

FISCAL_YEAR_BEGIN   FISCAL_YEAR_END
1999-07-01  2000-06-30
2000-07-01  2001-06-30
2001-07-01  2002-06-30
2002-07-01  2003-06-30
2003-07-01  2004-06-30
2004-07-01  2005-06-30
2005-07-01  2006-06-30
2006-07-01  2007-06-30
2007-07-01  2008-06-30
2008-07-01  2009-06-30
...
选择
增加月数(日期“1999-07-01”,12*(一级))作为财政年度开始,
增加月数(日期“1999-07-01”,12*级)-间隔“1”天作为会计年度结束
来自双重
按<60级连接;
财政年度开始财政年度结束
1999-07-01  2000-06-30
2000-07-01  2001-06-30
2001-07-01  2002-06-30
2002-07-01  2003-06-30
2003-07-01  2004-06-30
2004-07-01  2005-06-30
2005-07-01  2006-06-30
2006-07-01  2007-06-30
2007-07-01  2008-06-30
2008-07-01  2009-06-30
...

这将很困难:六月只有30天!请参阅可能的副本