处理多个日期范围时,生成这些范围内的所有日期可能是一个挑战。让我们探索处理这种情况的有效解决方案。
提供的输入由两个日期范围组成:
ID START_DATE END_DATE 101 April, 01 2013 April, 10 2013 102 May, 10 2013 May, 12 2013
我们的目标是生成一个输出表,列出这些范围内的所有日期:
ID Dates 101 April, 01 2013 101 April, 02 2013 101 April, 03 2013 101 April, 04 2013 101 April, 05 2013 101 April, 06 2013 101 April, 07 2013 101 April, 08 2013 101 April, 09 2013 101 April, 10 2013 102 May, 10 2013 102 May, 11 2013 102 May, 12 2013
为了实现这一点,我们可以利用以下 SQL 查询:
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
查询生成最大日期范围内所有可能的日期差异,然后将它们添加到每个开始日期以生成所需的输出。
以上是如何使用 SQL 生成多个日期范围内的所有日期?的详细内容。更多信息请关注PHP中文网其他相关文章!