Sql 搜索日期范围内的日期是否包含在日期范围内

Sql 搜索日期范围内的日期是否包含在日期范围内,sql,oracle,datetime,where-clause,Sql,Oracle,Datetime,Where Clause,我使用甲骨文 create table "prba" ( "prba_id" number(18,0) not null, "start_date" date not null, "end_date" date ); 我有一些数据 prba_id | start_date | end_date 900 | 2020-01-20 | 2020-07-01 901 | 2017-

我使用甲骨文

create table "prba" 
( 
  "prba_id" number(18,0) not null, 
  "start_date" date not null, 
  "end_date" date 
);
我有一些数据

prba_id | start_date | end_date

    900 | 2020-01-20 | 2020-07-01
    901 | 2017-01-20 | 2018-08-03
    911 | 2020-09-01 | 
我的日期范围为2020-01-20(不包括)至2021-01-20(包括)


我搜索以获取prba开始日期/结束日期中包含此范围的日期的行。。。如果end_date为null,我们可以假设end_date为start_date+1年

我知道您需要日期范围与参数范围重叠的行。如果是,考虑:

select t.*
from prba
where coalesce(end_date, add_months(start_date, 12)) > date '2020-01-20'
  and start_date <= date '2020-07-20'
选择t*
来自prba
其中合并(结束日期,加上月份(开始日期,12))>日期“2020-01-20”
开始约会