生成多个日期范围内的日期
当要求超出单个日期范围时,生成多个日期范围内的所有日期会带来挑战。本文针对此类场景,提供了有效的解决方案。
问题
如提供的 SQL Fiddle 中所示,任务是生成给定集合的所有日期多个日期范围,如下所示:
<br>ID START_DATE END_DATE<br>2013 年 4 月 101 日 2013 年 4 月 10 日<br>2013 年 5 月 10 日 2013 年 5 月 10 日<br>
解决方案
以下查询解决了这个问题:
select A.ID, A.START_DATE+delta dt from t_dates A, ( select level-1 as delta from dual connect by level-1 <= ( select max(end_date - start_date) from t_dates ) ) where A.START_DATE+delta <= A.end_date order by 1, 2
解决方案分解
示例输出
对于输入如果提供,查询将返回以下输出:
<br>ID 日期<br>101 April, 01 2013<br>101 April, 02 2013<br>101 April, 03 2013<br>101 四月,04 2013年<br>2013年4月101日,2013年5月<br>2013年4月101日,<br>2013年4月7日101号<br>2013年4月101日,2013年4月8日<br>2013年4月101日,2013年9月<br>4月101日,10 2013年<br>2013年5月102日<br>2013年5月102日<br>2013年5月102日<br>
以上是如何在 SQL 中生成多个日期范围内的所有日期?的详细内容。更多信息请关注PHP中文网其他相关文章!