SQL Server , split a time duration row by 24 hour period

前端 未结 3 418
野的像风
野的像风 2020-12-03 14:37

I\'m working on sql server 2008 r2. I\'m trying to split a row by 24 hours period ranges between FromDate, Todate. For example, if a time r

3条回答
  •  失恋的感觉
    2020-12-03 15:33

    Try this query:

    WITH TAB1 (ID,FROMDATE,TODATE1,TODATE) AS
    (SELECT ID,
    FROMDATE,
    DATEADD(SECOND, 24*60*60 - 1, CAST(CAST(FROMDATE AS DATE) AS DATETIME)) TODATE1,
    TODATE 
    FROM TABLE1
    UNION ALL
    SELECT 
    ID,
    DATEADD(HOUR, 24, CAST(CAST(TODATE1 AS DATE) AS DATETIME)) FROMDATE,
    DATEADD(SECOND, 2*24*60*60-1, CAST(CAST(TODATE1 AS DATE) AS DATETIME)) TODATE1,
    TODATE
    FROM TAB1 WHERE CAST(TODATE1 AS DATE) < CAST(TODATE AS DATE)
    ),
    TAB2 AS
    (SELECT ID,FROMDATE,
    CASE WHEN TODATE1 > TODATE THEN TODATE ELSE TODATE1 END AS TODATE
    FROM TAB1)
    SELECT TAB2.*,
    DATEPART(hh, TODATE) - DATEPART(hh, FROMDATE) [DateDiff(HH)] FROM TAB2;
    

    SQL Fiddle

提交回复
热议问题