要识别包含日期序列的列中的连续日期范围,可以使用 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中文网其他相关文章!