我有一个 sql 查询来检查表 PRODUCTS 中产品记录的重叠。在大多数情况下,查询工作正常,但以下情况除外。
select * from products where
product_reg_no = 'AL-NAPT'
and (to_date('14-Aug-2001') BETWEEN to_date('27-Aug-2001') AND to_date('30-Aug-2001')
or to_date('31-Aug-2001') BETWEEN to_date('27-Aug-2001') AND to_date('30-Aug-2001'))
如何使此查询捕获所有记录部分或完全重叠?
如果需要,我可以提供带有示例记录的表结构。
谢谢
更新 1
我在此处或如下添加了表结构和记录:
create table products
(product_reg_no varchar2(32),
start_date date,
end_date date);
Insert into products
(product_reg_no, START_DATE, END_DATE)
Values
('AL-NAPT', TO_DATE('08/14/2012', 'MM/DD/YYYY'), TO_DATE('08/31/2012', 'MM/DD/YYYY'));
Insert into products
(product_reg_no, START_DATE, END_DATE)
Values
('AL-NAPT', TO_DATE('08/27/2012', 'MM/DD/YYYY'), TO_DATE('08/30/2012', 'MM/DD/YYYY'));
COMMIT;
从2012 年 8月 14 日到 2012 年8月 31 日的第一个记录与从 2012 年 8月 27 日到 2012 年8月 30 日的第二个记录重叠。那么如何修改我的查询以获得重叠?