想象一下这种情况 (YYYY/MM/DD):
Start date: 2015/01/01 End date: 2015/08/10
Start date: 2014/10/03 End date: 2015/07/06
Start date: 2015/09/30 End date: 2016/04/28
我可以使用 PL/SQL 计算这些重叠日期之间的不同天数吗?
编辑:我的表格有 2 个 DATE 列,Start_Date 和 End_Date。我期望的结果是 515 天 ((2015/08/10 - 2014/10/03) + (2016/04/28 -2015/09/30))
最佳答案
您也可以使用纯 SQL(不需要 PL/SQL):
with
minmax as (select min(start_date) min_dt, max(end_date) max_dt from myTable ),
dates as (
SELECT min_dt + rownum-1 dt1
FROM minmax CONNECT BY ROWNUM <= (max_dt - min_dt +1)
)
select count(*) from dates
where exists(
select 1 from MyTable T2
where dates.dt1 between T2.start_date and T2.end_date )
注意:一个想法,从头脑中写下,未经测试。根据需要调整生成的日期,包括开始日期和所需的长度。
希望对您有所帮助。
编辑:使用实际表格日期
https://stackoverflow.com/questions/32896697/