SqlServer Divide Date Range
SELECT
CASEWHEN BeginDate > MonthStart THEN BeginDate ELSE MonthStart ENDAS BeginDate,
CASEWHEN EndDate < MonthEnd THEN EndDate ELSE MonthEnd ENDAS EndDate,
… /* other columns as needed */
FROM(
SELECT
d.*, /* or you could be more specific here */
(
DATEADD(month, DATEDIFF(month,0, d.BeginDate)+ v.number,0)
)AS MonthStart,
DATEADD(day,-1,
DATEADD(month, DATEDIFF(month,0, d.BeginDate)+ v.number +1,0)
)AS MonthEnd
FROM RowsOfData d
INNERJOIN master..spt_values v ON v.type ='P'
AND v.number BETWEEN0AND DATEDIFF(month, d.BeginDate, d.EndDate)
) s
浙公网安备 33010602011771号