首页 >数据库 >mysql教程 >如何使用 SQL 生成多个日期范围内的所有日期?

如何使用 SQL 生成多个日期范围内的所有日期?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 22:32:40172浏览

How to Generate All Dates Within Multiple Date Ranges Using SQL?

在多个日期范围之间生成日期

处理多个日期范围时,生成这些范围内的所有日期可能是一个挑战。让我们探索处理这种情况的有效解决方案。

提供的输入由两个日期范围组成:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn