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

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

Linda Hamilton
發布: 2024-12-31 12:22:13
原創
811 人瀏覽過

How to Identify Consecutive Date Ranges in SQL?

使用SQL 檢測連續日期範圍

要識別包含日期序列的列中的連續日期範圍,可以使用SQL 來有效提取開始日期和結束日期每個不同範圍的。

考慮以下資料集:

InfoDate

2013-12-04
2013-12-05
2013-12-06

2013-12-09
2013-12-10

2014-01-01
2014-01-02
2014-01-03

2014-01-06
2014-01-07

2014-01-29
2014-01-30
2014-01-31

2014-02-03
2014-02-04
登入後複製

目標是擷取每個連續日期範圍的開始和結束日期,結果是:

StartDate     EndDate

2013-12-04    2013-12-06
2013-12-09    2013-12-10
2014-01-01    2014-01-03
2014-01-06    2014-01-07
2014-01-29    2014-01-31
2014-02-03    2014-02-04
登入後複製

可以使用以下步驟設計一個簡化且有效率的SQL 解決方案:

  1. 分配一個InfoDate列中每個日期的唯一行號,建立一個名為 t 的輔助表。此編號有助於對連續日期進行分組。
  2. 根據日期與其對應行號之間的差異將 t 中的行分組。這種分組會在日期序列中產生「間隙」。
  3. 在每個組別中,最小和最大日期代表連續日期範圍的開始和結束日期。

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)
登入後複製

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

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