У меня есть поле даты
DATE = 10/10/2010
sum = 4 (это количество лет по расчёту)
есть ли способ добавить четыре года к 10/10/2010 и сделать это 10/10/2014
У меня есть поле даты
DATE = 10/10/2010
sum = 4 (это количество лет по расчёту)
есть ли способ добавить четыре года к 10/10/2010 и сделать это 10/10/2014
Попробуйте добавить месяцы (12 * количество лет). Как это -
add_months(date'2010-10-10', 48)
Используйте 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 в результате.
Я считаю, что вы можете использовать функцию 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
Я не уверен, если я правильно понял ваш вопрос, но
select add_months(someDate, numberOfYears * 12) from dual
может сделать трюк
Вы можете попробовать следующее:
someDate + interval '4' year
Еще один вариант, кроме 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 февраля)
Прочитайте документацию для того же