计算并插入财务年度及其20年的财务期间,月份,开始日期和结束日期

时间:2019-07-04 00:11:49

标签: c# sql-server datetime

我需要在数据库中生成20年的日期数据。它应该计算财务开始月份(假设为2019年7月),然后计算开始日期(7月1日)和结束日期(7月31日)以及该财政年度的期间(7天)。然后它将发现从7月开始的所有月份都在递增20年。

应该是这样

财务年度月期间开始日期结束日期

  1. 2019年7月7日2019/07/01 2019/07/31
  2. 2019年8月8日2019/08/01 2019/08/31
  3. ....
  4. ....
  5. 2039

有人可以帮助我如何解决此问题?

非常感谢。

1 个答案:

答案 0 :(得分:1)

declare @year int, @month int
SELECT @year = 2019, @month = 7

;with cte as (
    SELECT DATEFROMPARTS(@year, @month, 1) start_date, 1 as cnt
    union all 
    SELECT DATEADD(MONTH, 1, start_date), cnt + 1
    FROM cte
    WHERE cnt < 240
),
cte2 as (
    SELECT start_date, 
        DATEADD(day, -1, DATEADD(month, 1, start_date)) end_date,
        DATEPART(YEAR, start_date) year, 
        DATENAME(MONTH, start_date) month,
        DATEPART(MONTH, start_date) period  
    FROM cte
)
select year, month, 
    RIGHT('0' + cast(period as varchar(2)), 2) as period,
    start_date, 
    end_date
from cte2
option(maxrecursion 0)

返回:

year    month       period  start_date  end_date
2019    July        07      2019-07-01  2019-07-31
2019    August      08      2019-08-01  2019-08-31
2019    September   09      2019-09-01  2019-09-30
...
2039    April       04      2039-04-01  2039-04-30
2039    May         05      2039-05-01  2039-05-31
2039    June        06      2039-06-01  2039-06-30