根据datediff将行拆分为多行



我正在努力根据两列之间的datediff拆分一行到多行。例如,W想要分割行:

tbody> <<tr>
whatever startdatetime enddatetime
data12023-03-10 10:00:002023-03-14 15:00:00
/* Using
https://www.sqlservercentral.com/scripts/a-daterange-table-valued-function
*/
/* DDL and Test Data */
CREATE TABLE #t
(
whatever varchar(20) NOT NULL
,startdatetime datetime NOT NULL
,enddatetime datetime NOT NULL
);
GO
INSERT INTO #t
VALUES('data1', '20230310 10:00:00', '20230314 15:00:00');
GO
/* END DDL and Test Data */
SELECT T.whatever, T.startdatetime, T.enddatetime
,CASE
WHEN X.[Value] > T.startdatetime
THEN X.[Value]
ELSE T.startdatetime
END
,CASE
WHEN DATEADD(day, DATEDIFF(day, 0, T.enddatetime), 0) = X.[Value]
THEN T.enddatetime
ELSE DATEADD(day, 1, X.[Value])
END
FROM #t T
CROSS APPLY dbo.DateRange(T.startdatetime, T.enddatetime, 'dd', 1) X1
CROSS APPLY (VALUES(DATEADD(day, DATEDIFF(day, 0, X1.[Value]), 0))) X ([Value]);

最新更新