C# 计算并插入财政年度及其20年的财政期间、月份、开始和结束日期
我需要在我的数据库中生成20年的日期数据。它应该计算财务开始月(假设2019年7月),然后计算开始日期(7月1日)和结束日期(7月31日)以及财务年度期间(7个期间)。然后它会发现所有月份从7月份开始连续20年递增 应该是这样的 财务年度月份期间开始日期结束日期C# 计算并插入财政年度及其20年的财政期间、月份、开始和结束日期,c#,sql-server,datetime,C#,Sql Server,Datetime,我需要在我的数据库中生成20年的日期数据。它应该计算财务开始月(假设2019年7月),然后计算开始日期(7月1日)和结束日期(7月31日)以及财务年度期间(7个期间)。然后它会发现所有月份从7月份开始连续20年递增 应该是这样的 财务年度月份期间开始日期结束日期 2019年7月7日2019/07/01 2019/07/31 2019年8月8日2019/08/01 2019/08/31 2039年 有人能帮我解决这个问题吗 非常感谢。什么问题?你所做的只是快速说出一些参数。你试过什么?失败点是
非常感谢。什么问题?你所做的只是快速说出一些参数。你试过什么?失败点是什么?你还需要解释一些事情,比如
期间7
意味着…一年中有7个财务期间吗??看起来不可能是第七个月,正如你所说,7月是开始的月份,我正在寻找可能的解决方案。我无法决定如何解决这个问题,这就是为什么要寻求帮助。我无法决定这是只能在SQL中完成,还是需要一些额外的东西。您想在C#还是SQL中完成?你试过什么吗?你在这方面面临什么问题?暗示将开始日期设置为7月1日,并使用DateTime.AddMonths获取下个月的开始日期。使用循环重复执行此操作。下次尝试一点internet搜索。这里有一个关于构建@ChetanRanpariya的讨论,谢谢你的逻辑。我用同样的逻辑生成日期。
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