Comparing date ranges

后端 未结 10 1451
予麋鹿
予麋鹿 2020-11-22 16:10

In MySQL, If I have a list of date ranges (range-start and range-end). e.g.

10/06/1983 to 14/06/1983
15/07/1983 to 16/07/1983
18/07/1983 to 18/07/1983
         


        
10条回答
  •  天命终不由人
    2020-11-22 16:15

    Try This on MS SQL


    WITH date_range (calc_date) AS (
    SELECT DATEADD(DAY, DATEDIFF(DAY, 0, [ending date]) - DATEDIFF(DAY, [start date], [ending date]), 0)
    UNION ALL SELECT DATEADD(DAY, 1, calc_date)
    FROM date_range 
    WHERE DATEADD(DAY, 1, calc_date) <= [ending date])
    SELECT  P.[fieldstartdate], P.[fieldenddate]
    FROM date_range R JOIN [yourBaseTable] P on Convert(date, R.calc_date) BETWEEN convert(date, P.[fieldstartdate]) and convert(date, P.[fieldenddate]) 
    GROUP BY  P.[fieldstartdate],  P.[fieldenddate];
    

提交回复
热议问题