问题:
您需要从包含以下内容的表中提取连续的日期范围单列未排序的日期。这些范围表示需要开始日期和结束日期才能准确填充日历对象的时间段。
解决方案:
方法:
为了使用 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)
解释:
输出:
结果表应包含以下内容columns:
此输出提供每个连续日期范围的开始和结束日期,允许您使用以下内容填充日历对象必要的日期信息。
以上是如何在 SQL 中识别和提取连续的日期范围?的详细内容。更多信息请关注PHP中文网其他相关文章!