How can compare between times in while loop in stored procedure?

前端 未结 1 1255
鱼传尺愫
鱼传尺愫 2021-01-27 08:20

Please help me on this, I have been working to do conditions to get the time within the 24 hours only.

So I have something like this. Can anyone help me or tell me if th

相关标签:
1条回答
  • 2021-01-27 09:19

    If you want to generate all DATETIME values within time period [@StartDate, @EndDate] then you could use a "tally" table:

    SET NOCOUNT ON
    GO
    -- DROP TABLE dbo.Numbers
    CREATE TABLE dbo.Numbers (
        Num INT IDENTITY(0,1), 
        CONSTRAINT PK_Numbers_Num PRIMARY KEY (Num)
    );
    GO
    -- It generates all values from 0 to 9999
    INSERT dbo.Numbers DEFAULT VALUES 
    GO 10000 -- You can insert more numbers if diff. between those two date/time values is greather than 13 days (I used a frecv. of 2 minutes to computes this maximum limit)
    

    and then a simple SELECT statement

    DECLARE @StartDate DATETIME2(0), @EndDate DATETIME2(0), @Frequency TINYINT
    SELECT  @StartDate = '2015-04-17 11:00:00',
            @EndDate = '2015-04-17 11:15:00',
            @Frequency = 2; -- Minutes
    
    SELECT  n.Num, 
            DATEADD(MINUTE, n.Num*@Frequency, @StartDate) AS RangeStart
            /*,
            CASE 
                WHEN DATEADD(MINUTE, (n.Num + 1)*@Frequency, @StartDate) > @EndDate
                THEN @EndDate
                ELSE DATEADD(MINUTE, (n.Num + 1)*@Frequency, @StartDate)
            END AS RangeEnd
            */
    FROM    dbo.Numbers n
    WHERE   n.Num <= DATEDIFF(MINUTE, @StartDate, @EndDate) / @Frequency
    /*
    Num         RangeStart                  RangeEnd
    ----------- --------------------------- ---------------------------
    0           2015-04-17 11:00:00         2015-04-17 11:02:00
    1           2015-04-17 11:02:00         2015-04-17 11:04:00
    2           2015-04-17 11:04:00         2015-04-17 11:06:00
    3           2015-04-17 11:06:00         2015-04-17 11:08:00
    4           2015-04-17 11:08:00         2015-04-17 11:10:00
    5           2015-04-17 11:10:00         2015-04-17 11:12:00
    6           2015-04-17 11:12:00         2015-04-17 11:14:00
    7           2015-04-17 11:14:00         2015-04-17 11:15:00
    */
    
    0 讨论(0)
提交回复
热议问题