Използването на функцията add_months() е неправилно. Това не са две думи, а само една (с долна черта)
add_months(datesold, 1)
обърнете внимание на долната черта _
между ADD
и MONTHS
. Това е извикване на функция, а не оператор.
Като алтернатива можете да използвате:
datesold + INTERVAL '1' month
Въпреки че си струва да се отбележи, че аритметиката с интервали е ограничена (ако не е нарушена), защото просто "увеличава" стойността на месеца на стойността на датата. Това може да доведе до невалидни дати (напр. от януари до февруари). Въпреки че това е документирано поведение (вижте връзките по-долу), считам това за грешка (стандартът SQL изисква тези операции да "Аритметиката се подчинява на естествените правила, свързани с датите и часовете, и да дава валидни резултати за дата, час или интервал според григорианския календар “)
Вижте ръководството за подробности:
http ://docs.oracle.com/cd/E11882_01/server.112/e26088/functions011.htm#i76717
http://docs.oracle .com/cd/E11882_01/server.112/e26088/sql_elements001.htm#i48042
Друго нещо:
Тогава защо използвате INSERT
изявление? За да промените данните на съществуващи редове, трябва да използвате UPDATE
. Така че изглежда това, което наистина търсите, е нещо подобно:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';