我需要在数据库中生成20年的日期数据。它应该计算财务开始月份(假设为2019年7月),然后计算开始日期(7月1日)和结束日期(7月31日)以及该财政年度的期间(7天)。然后它将发现从7月开始的所有月份都在递增20年。
应该是这样
财务年度月期间开始日期结束日期
有人可以帮助我如何解决此问题?
非常感谢。
答案 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