[英]SQL Server datetime ranges between records
在 SQL 服務器中獲取記錄之間的日期時間范圍的最佳方法是什么? 我認為用一個例子來解釋是最容易的。
我有以下數據 - 這些記錄開始和結束日期時間范圍永遠不會重疊:
ID | 開始 | 結尾 |
---|---|---|
1 | 2021 年 1 月 27 日 06:00:00 | 2021 年 1 月 27 日 09:00:00 |
2 | 2021 年 1 月 27 日 10:00:00 | 2021 年 1 月 27 日 14:00:00 |
3 | 2021 年 1 月 27 日 21:00:00 | 2021 年 1 月 28 日 04:00:00 |
4 | 2021 年 1 月 28 日 06:00:00 | 2021 年 1 月 28 日 09:00:00 |
我需要獲取記錄之間的日期時間范圍。 因此,生成的 SQL 查詢將返回以下結果集(ID 無關緊要):
ID | 開始 | 結尾 |
---|---|---|
1 | 2021 年 1 月 27 日 09:00:00 | 2021 年 1 月 27 日 10:00:00 |
2 | 2021 年 1 月 27 日 14:00:00 | 2021 年 1 月 27 日 21:00:00 |
3 | 2021 年 1 月 28 日 04:00:00 | 2021 年 1 月 28 日 06:00:00 |
感謝您提前提供任何幫助。
使用lead()
:
select t.*
from (select id, end as start, lead(start) over (order by start) as end
from t
) t
where end is not null;
注意: end
是一個糟糕的列名稱,因為它是一個 SQL 關鍵字。 我認為它僅用於說明目的。
這是 SQL 小提琴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.