Введение в стандарты языка баз данных SQL


Предикат overlaps


Этот предикат служит для проверки перекрытия во времени двух событий. Условие определяется следующим синтаксисом:

<overlaps predicate> ::= <row value constructor 1> OVERLAPS <row value constructor 2> <row value constructor 1> ::= <row value constructor> <row value constructor 2> ::= <row value constructor>

Пояснения:

  1. Степень каждой из строк-операндов должна быть равна 2.
  2. Тип данных первого столбца каждого из операндов должен быть типом даты-времени, и типы данных первых столбцов должны быть совместимы.
  3. Тип данных второго столбца каждого из операндов должен быть типом даты-времени или интервала.

      (a) если это тип интервала, то точность типа должна быть такой, чтобы интервал можно было прибавить к значению типа дата-время первого столбца;

      (b) если это тип дата-время, то он должен быть совместим с типом данных дата-время первого столбца.

  4. Пусть D1 и D2 обозначают значения первого столбца первого и второго операндов соответственно.
  5. Если второй столбец первого операнда имеет тип дата-время, то пусть E1 обозначает его значение.
  6. Если второй столбец первого операнда имеет тип INTERVAL, то пусть I1 обозначает его значение, а E1 = D1 + I1.
  7. Если D1 - неопределенное значение или если E1 < D1, то пусть S1 = E1 и T1 = D1. Иначе, пусть S1 = D1 и T1 = E1.
  8. Аналогично определяются S2 и T2 применительно ко второму операнду.
  9. Результат условия совпадает с результатом вычисления следующего выражения:

(S1 > S2 ANDNOT (S1 >= T2 ANDT1 >= T2)) OR (S2 > S1 ANDNOT (S2 >= T1 ANDT2 >= T1)) OR (S1 = S2 AND (T1 <> T2 ORT1 = T2))




Начало  Назад  Вперед



Книжный магазин