Oracle Date - Как добавить годы к дате - PullRequest
26 голосов
/ 16 февраля 2012

У меня есть поле даты

DATE = 10/10/2010

сумма = 4 (это количество лет по расчету)

есть ли способ добавить четыре года к 10/10/2010 и сделать это 10/10/2014

Ответы [ 6 ]

46 голосов
/ 16 февраля 2012

Попробуйте вместо этого добавить месяцы (12 * количество лет). Как это-

add_months(date'2010-10-10', 48)
19 голосов
/ 16 февраля 2012

Использование add_months

Пример:

SELECT add_months( to_date('10-OCT-2010'), 48 ) FROM DUAL;

Предупреждение
add_months, возвращает последний день результирующего месяца, если вы ввели последний деньмесяца для начала.

Таким образом, add_months(to_date('28-feb-2011'),12) вернется 29 февраля 2012 года.

8 голосов
/ 16 февраля 2012

Полагаю, вы могли бы использовать функцию ADD_MONTHS(). 4 года - это 48 месяцев, поэтому:

add_months(DATE,48)

Вот некоторая информация по использованию функции:

http://www.techonthenet.com/oracle/functions/add_months.php

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361

7 голосов
/ 16 февраля 2012

Я не уверен, правильно ли я понял Ваш вопрос, но

select add_months(someDate, numberOfYears * 12) from dual

может помочь

3 голосов
/ 28 января 2013

Вы можете попробовать это:

someDate + interval '4' year

ИНТЕРВАЛ

2 голосов
/ 29 октября 2013

Еще одна опция, кроме ADD_MONTHS

SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('1-0')
--------- ----------------------------
29-OCT-13 29-OCT-14                   
1 row selected.


SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '2-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('2-0')
--------- ----------------------------
29-OCT-13 29-OCT-15                   
1 row selected.

SELECT
      TO_DATE ( '29-FEB-2004',
              'DD-MON-YYYY' )
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL

   *
Error at line 4

ORA-01839: date not valid for month specified

Но последний является незаконным, поскольку в 2005 году не было 29-го числа февраля, следовательно, он терпит неудачу в случаях високосного года (29 февраля)

Прочитайте документацию для того же

...