У меня есть поле датыOracle Дата - Как добавить годы к настоящему времени
DATE = 10/10/2010
сумма = 4 (это есть число лет, по расчету)
есть способ, чтобы добавить четыре года до 10/10/2010 и сделать это 10.10.2014?
У меня есть поле датыOracle Дата - Как добавить годы к настоящему времени
DATE = 10/10/2010
сумма = 4 (это есть число лет, по расчету)
есть способ, чтобы добавить четыре года до 10/10/2010 и сделать это 10.10.2014?
Попробуйте добавить месяцы (12 * количество лет). Как this-
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
может сделать трюк
Просто рекомендация. Избегайте использования типа данных INTERVAL. Он соответствует требованиям ANSI/ISO. Поэтому заявление, которое вы написали, не будет работать в течение 29 февраля. Как правило, вам решать, что результат будет правильным. Хотя add_months является собственностью Oracle и генерирует допустимые даты для случаев. – ibre5041
@ ibre5041 Извините, что поднял это сообщение из могилы, но я искал способ сделать это, не заставляя его придерживаться последнего дня месяца при расчете дней рождения, потому что add_month() терпит неудачу в течение 2/28. Когда в следующем году будет високосный год, add_months (to_date ('02 -28 ',' MM-DD ')) возвращает 02-29, что неверно.Я обнаружил, что следующее правило возвращает правильную дату: (to_date ('02 -28 ',' MM-DD ') - 1) + интервал' 1 'год + 1 возвращает 02-28, даже если следующий год является прыжком год, и если вы разместите 02-29, он вернется 03-01 в не-високосные годы. – Bob
Еще один вариант, кроме 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 февраля)
Прочитано documentation за то же
Работы високосные годы тоже. – ScrappyDev