簡體   English   中英

SQL 記錄之間的服務器日期時間范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM