Арифметическое добавление месяцев к исходной дате.
::=
<Значимое выражение>
должно иметь тип DATE или приводиться к нему.
<Количество месяцев>
– численное значение типа INT, SMALLINT, BIGINT, NUMERIC, REAL, DOUBLE или приводимое к нему.
Аргументы могут быть заданы <SQL-параметром>
, который должен содержать
спецификацию типа данных параметра.
select sysdate as "Дата зачатия", add_months(sysdate, ? (int)) as "Дата рождения"; 9 Дата зачатия Дата рождения ------------ ------------- |12.03.2014:11:11:23.32|12.12.2014:11:11:23.32|
Возвращается значение типа DATE, увеличенное (уменьшенное) на заданное <количество месяцев>
.
При положительном значении аргумента <количество месяцев>
формируется будущая дата, при отрицательном – прошлая по сравнению с исходной.
select add_months(cast '15-04-2006' as date,3), add_months(cast '15-04-2006' as date,-3); |15.07.2006:00:00:00|15.01.2006:00:00:00|
Если значение параметра <количество месяцев>
не является целочисленным значением, оно усекается до целой части.
select add_months(cast '15-04-2006' as date,3.6), add_months(cast '15-04-2006' as date,-3.4), add_months(cast '15-04-2006' as date,.5); |15.07.2006:00:00:00|15.01.2006:00:00:00|15.04.2006:00:00:00|
При добавлении месяцев номер дня в результирующей дате не меняется, за исключением тех случаев, когда он приходится на конец месяца.
select add_months(cast '31-01-2006' as date, 1), add_months(cast '28-02-1999' as date, 12), add_months(cast '31-05-2006' as date, -1); |28.02.2006:00:00:00|29.02.2000:00:00:00|30.04.2006:00:00:00|