我正在努力根据两列之间的
datediff
将一行拆分为多行。例如W 想分行:
随便 | 开始日期时间 | 结束日期时间 |
---|---|---|
数据1 | 2023-03-10 10:00:00 | 2023-03-14 15:00:00 |
进入
随便 | altstartdatetime | altenddatetime |
---|---|---|
数据1 | 2023-03-10 10:00:00 | 2023-03-10 23:59:59 |
数据1 | 2023-03-11 00:00:00 | 2023-03-11 23:59:59 |
数据1 | 2023-03-12 00:00:00 | 2023-03-12 23:59:59 |
数据1 | 2023-03-13 00:00:00 | 2023-03-13 23:59:59 |
数据1 | 2023-03-14 00:00:00 | 2023-03-14 15:00:00 |
目前我已经实现了日期不重叠,代码重叠1天的案例:
SELECT
[whatever], [startdatetime] AS altstartdatetime,
CAST([startdatetime] AS time) AS altstarttime,
CASE
WHEN DATEDIFF(day, [startdatetime], [enddatetime]) > 0
THEN CAST(CONVERT(varchar, CONVERT(date, [startdatetime])) + ' 23:59:59' AS datetime)
ELSE [enddatetime]
END AS altenddatetime,
CASE
WHEN DATEDIFF(day, [startdatetime], [enddatetime]) > 0
THEN CAST('23:59:59' AS time)
ELSE CAST([enddatetime] AS time)
END AS altendtime
FROM
[somewhere]
UNION ALL
SELECT
[whatever],
CASE
WHEN DATEDIFF(day, [startdatetime], [enddatetime]) = 1
THEN CAST(CONVERT(varchar, CONVERT(date, enddatetime)) + ' 00:00:00' AS datetime)
END AS altstartdatetime,
CAST('00:00:00' AS time) AS altstarttime, [enddatetime] AS altenddatetime,
CAST([enddatetime] AS time) AS altendtime,
FROM
[somewhere]
WHERE
DATEDIFF(day, [startdatetime], [enddatetime]) = 1
如何包括带有
datediff > 1
的案例?
提前致谢。