Сдвиг даты на заданный интервал

Функция

Сдвиг даты на заданный интервал.

Спецификация
 
< тип интервала >::=
< интервал >::=
< исходная дата >::=
Синтаксические правила
  1. Допустимые значения параметра < тип интервала >:

    Тип интервала Единицы интервала
    1 Тики
    2 Секунды
    4 Минуты
    8 Часы
    16 Дни
    32 Недели
    64 Месяцы
    128 Кварталы
    256 Годы
  2. < Числовое выражение > приводится к целочисленному значению.

  3. Все аргументы могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select multime(:hour (int), ? (int), ? (date));
    8
    4
    01.01.2013:12:45
    |01.01.2013:16:45:00.00|

Возвращаемое значение
  1. Результат функции не должен превышать дату 31.12.9999 года (в случае сдвига вперед) и дату начала нашей эры (в случае сдвига назад).

  2. Возвращается значение типа DATE, увеличенное (уменьшенное) по сравнению с < исходной датой > на заданный < интервал >.

  3. Если < исходная дата > представлена только временем, и < интервал > задает дни, недели, месяцы, кварталы или годы, то она перед вычислением устанавливается к текущей дате.

Примеры

Пусть файл multime1.sql содержит операторы:

select sysdate;
select multime(8,2,sysdate);
select multime(16,-4.7,sysdate);
select multime(256,.95е2,sysdate);
select multime(8,ceil(2.67), sysdate);
SQL >_multime1
|07.09.2010:10:29:21.73 |

|07.09.2010:12:29:21.73 |

|03.09.2010:10:29:21.73 |

|07.09.2105:10:29:21.73 |

|07.09.2010:13:29:21.73 |