要識別包含日期序列的列中的連續日期範圍,可以使用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 解決方案:
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中文網其他相關文章!