【问题标题】:Increment Time with 1 minute and 5 minute intervals using c# - if possible with sql server too使用 c# 以 1 分钟和 5 分钟为间隔增加时间 - 如果可能的话,也可以使用 sql server
【发布时间】:2010-11-11 04:44:31
【问题描述】:

我有一个要求,其中我有一个开始和结束时间。例如让我们假设 开始时间为 10:00,结束时间为 17:30。我需要每隔 1 分钟和 5 分钟增加一次。

例如,如果我单击名为“增量 5 分钟”的按钮,系列应该是这样的,

10:00 10:05 10:10

...

17:30

如果我点击按钮“增加 1 分钟”,那么系列应该是

10:00 10:01 10:02 .....

17:30。

如果有人能用代码向我解释如何使用 c# 实现这一点,以及如何编写存储过程来实现相同的功能(SQL Server),我将不胜感激

【问题讨论】:

    标签: c# .net asp.net sql-server asp.net-mvc-2


    【解决方案1】:

    您将在 Sql Server 中使用 WHILE 循环或在 Sql Server 2005+ 中使用递归 CTE

    CTE

    DECLARE @StartTime DATETIME,
            @EndTime DATETIME,
            @Inc INT
    
    SELECT  @StartTime = '10:00',
            @EndTime = '17:30',
            @Inc = 1
    
    ;WITH Vals AS (
            SELECT  @StartTime RunTime
            UNION   ALL
            SELECT  DATEADD(mi,@Inc,RunTime) 
            FROM    Vals
            WHERE   DATEADD(mi,@Inc,RunTime) <= @EndTime
    )
    SELECT  *
    FROm    Vals
    OPTION (MAXRECURSION 0)
    

    对于 C#,我会实现一些简单的东西,例如

    C#

    DateTime startTime = DateTime.Today.AddHours(10);
    DateTime endTime = DateTime.Today.AddHours(17).AddMinutes(30);
    int inc = 1;
    List<DateTime> timeList = new List<DateTime>();
    while (startTime < endTime)
    {
        timeList.Add(startTime);
        startTime = startTime.AddMinutes(inc);
    }
    timeList.Add(endTime);
    

    甚至

    DateTime startTime = DateTime.Today.AddHours(10);
    DateTime endTime = DateTime.Today.AddHours(17).AddMinutes(30);
    List<DateTime> timeEnumList = new List<DateTime>();
    Enumerable.Range(0, (int)(endTime.Subtract(startTime).TotalMinutes / inc) + 1).ToList().ForEach(i => timeEnumList.Add(startTime.AddMinutes(i)));
    

    【讨论】:

      【解决方案2】:

      在 C# 中,它是 TimeSpan 类。您可以在算术中使用“+”或“-”对 DateTime 对象。

      【讨论】:

        【解决方案3】:

        我有一个 SQL Server CTE 函数,它可以生成您可以使用的开始和结束日期时间值之间的时间间隔......它是 explained here。

        【讨论】:

          猜你喜欢
          • 2020-07-30
          • 1970-01-01
          • 1970-01-01
          • 2014-08-07
          • 2015-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多