Помесячное изменение даты
Функция
Арифметическое добавление месяцев к исходной дате.
Спецификация
::=
Синтаксические правила
-
< Значимое выражение >
должно иметь тип 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|