gpt4 book ai didi

oracle - PL/SQL - 计算重叠时间段之间的不同天数

转载 作者:行者123 更新时间:2023-12-05 09:21:23 28 4
gpt4 key购买 nike

想象一下这种情况 (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 )

注意:一个想法,从头脑中写下,未经测试。根据需要调整生成的日期,包括开始日期和所需的长度。

希望对您有所帮助。

编辑:使用实际表格日期

关于oracle - PL/SQL - 计算重叠时间段之间的不同天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32896697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com