Доступные версии документации

Предикат совмещения

Функция

Определение проверки совпадения во времени двух дат.

Спецификация
 
Синтаксические правила
  1. Количество <значимых выражений> в <проверяемой записи> и <сличаемой записи> должно быть равно 2.

  2. Тип данных первого столбца <проверяемой записи> и <сличаемой записи> должен быть совместимым с типом даты-времени.

  3. Тип данных второго столбца <проверяемой записи> и <сличаемой записи> должен быть типом даты-времени.

Общие правила
  1. <Предикат совмещения> возвращает TRUE, если интервал между датами <проверяемой записи> попадает в интервал между датами в <сличаемой записи>. В противном случае возвращается FALSE.

  2. Если одна из дат в <проверяемой записи> или <сличаемой записи> имеет NULL-значение, результат предиката всегда FALSE.

Примеры
  1. Найти номера проектов, которые выполнялись в период с 15 января 2007 г. по 15 февраля 2007 г.:

    create or replace table pro(pro_no int, pro_name char(100), pro_sdate date, pro_edate date);
    insert into pro values(1,'project_1','01.02.2006', '01.12.2006');
    insert into pro values(2,'project_2','01.10.2006', '01.03.2007');
    insert into pro values(3,'project_3','01.02.2007', '01.05.2007');
          

    Эти три запроса идентичны:

    select pro_no from pro
    where (pro_sdate, pro_edate) overlaps ('15.01.2007', '15.02.2007');
    
    select pro_no from pro
    where (pro_sdate, pro_edate) overlaps (values ('15.01.2007', '15.02.2007'));
    
    select pro_no from pro
    where (pro_sdate, pro_edate) overlaps (select '15.01.2007', '15.02.2007');
    
    pro_no
     ------
    |          2|
    |          3|
  2. select id from date_list dl1 where (date1,date2) not overlaps (select date1,date2 from date_list dl2 where dl1.id=dl2.id);
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter