Операции над значениями типа DATE
Над значениями типа DATE разрешены следующие операции:
-
бинарная операция сложения;
-
бинарная операция вычитания.
В бинарных операциях один из операндов должен иметь значение не полной даты, а отдельного элемента значения даты: только год, или месяц, или день и т.д. Например, при добавлении к дате '22.05.1998' 5 лет получится дата '22.05.2003'; при добавлении 9 месяцев получится дата '22.02.1998'; при добавлении 10 дней получится дата '01.06.1998'. При сложении двух полных дат, например, '22.05.1998' и '01.12.2000', результат будет непредсказуем.
Если к значению типа DATE добавляется (вычитается) просто число (без указания формата), то это число принимается за количество дней.
Значение лет (без указания дней, часов, минут, секунд и т.п.) из 2 цифр воспринимается как относительное (т.е. месяцы остаются без изменений, дни ставятся в 0), из 4 цифр – как абсолютное (т.е. дни и месяцы, если их нет, ставятся в 1). Сравните:
select to_date('03.02.2011', 'DD.MM.YYYY') - to_date('05','yy'); |03.02.2006:00:00:00.00| select to_date('03.02.2011', 'DD.MM.YYYY') - to_date('0005','yyyy'); |02.02.2007:00:00:00.00|
Элементы конструкций могут быть заданы < SQL-параметром >
, который должен
содержать спецификацию типа данных параметра, например,
select ? (date) - to_date(? (char(2)),'yy'); 16.03.2015 05 |16.03.2010:00:00:00.00|
Примеры
select sysdate + to_date('05','yy') from person;
select sysdate; |27.03.2003:15:33:42.00 |
select sysdate+3; |30.03.2003:15:34:40.00 |
select sysdate+4.56; |01.04.2003:05:01:40.00 |
select to_date('15.10.2007 10:20','DD.MM.YYYY HH:MI') + 1.1e0; |16.10.2007:12:44:00.00|