add_months()
принимает целое число для второго аргумента.Это для добавления целых месяцев к прошедшей дате.Даже то, что является спорным (рассмотреть результаты add_months(date '2019-02-28', 1)
против add_months(date '2020-02-28', 1)
).
1005 * Если мы переходим поплавок к
add_months()
он просто округляет, а не бросать исключение.(Кроме того, спорный, возможно.) Таким образом, проходя
0.5
означает, что он просто возвращает дату ввода без изменений. 1009 * Итак, что вы имеете в виду под «полмесяца»?Это не стандартная единица времени, поскольку это зависит от того, какой месяц мы обсуждаем.
Если вы имеете в виду две недели, используйте это:
d_date := new_date + interval '14' day; -- interval doesn't support WEEK in Oracle
в базе данных, которую мы можем добавить за неделю (0,25), 2 недели (0,5), месяц илигод (12) и т. д.
Вы должны обращаться с этим программно.Объявите переменную для хранения интервала
i interval day to second;
Тогда ваш код должен выглядеть примерно так:
if period < 1 then
if period = 0.25 then
i := interval '7' day;
elsif period = 0.5 then
i := interval '14' day;
elsif period = 0.75 then
i := interval '21' day;
end if;
d_date := new_date + i;
else
d_date := add_months(new_date, period);
end;