首頁 > 資料庫 > mysql教程 > 如何在 SQL 中識別和提取連續的日期範圍?

如何在 SQL 中識別和提取連續的日期範圍?

Mary-Kate Olsen
發布: 2025-01-03 05:34:38
原創
127 人瀏覽過

How to Identify and Extract Consecutive Date Ranges in SQL?

在SQL 中識別連續的日期範圍

問題:

您需要從包含以下內容的表中提取連續的日期範圍單列未排序的日期。這些範圍表示需要開始日期和結束日期才能準確填入日曆物件的時間段。

解決方案:

方法:

為了使用SQL 解決這個問題,我們可以採用“間隙和島嶼”方法。此方法根據連續日期與行號的差異對連續日期進行分組,因為該值對於每個連續序列保持不變。然後,我們使用 MIN() 和 MAX() 函數提取每個群組的開始和結束日期。

SQL 查詢:

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)
登入後複製

解釋:

  • WITH 子句建立公用表CTE)名為t。
  • CTE 選擇原始表 @d 中每行的 InfoDate 欄位 d 和行號 i。
  • 資料以InfoDate 分組,以確保每個連續序列內的唯一性.
  • SELECT 語句計算每個組的最小和最大日期,代表連續範圍的開始和結束日期,
  • DATEDIFF() 函數用於計算行號和日期之間的差值,該差值在每個連續序列中保持不變,有效地將連續日期分組在一起。

輸出:

結果表應包含以下內容columns:

  • StartDate
  • EndDate

此輸出提供每個連續日期範圍的開始和結束日期,讓您可以使用以下內容填入日曆物件必要的日期資訊。

以上是如何在 SQL 中識別和提取連續的日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板