Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
C# 计算并插入财政年度及其20年的财政期间、月份、开始和结束日期_C#_Sql Server_Datetime - Fatal编程技术网

C# 计算并插入财政年度及其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年 有人能帮我解决这个问题吗 非常感谢。什么问题?你所做的只是快速说出一些参数。你试过什么?失败点是

我需要在我的数据库中生成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