Seu uso da função add_months() está incorreto. Não são duas palavras, é apenas uma (com sublinhado)
add_months(datesold, 1)
observe o sublinhado
_
entre ADD
e MONTHS
. É uma chamada de função, não um operador. Alternativamente, você pode usar:
datesold + INTERVAL '1' month
Embora valha a pena notar que a aritmética com intervalos é limitada (se não for quebrada) porque simplesmente "incrementa" o valor do mês do valor da data. Isso pode levar a datas inválidas (por exemplo, de janeiro a fevereiro). Embora este seja um comportamento documentado (veja os links abaixo), considero isso um bug (o padrão SQL exige que essas operações "Aritmética obedeçam às regras naturais associadas a datas e horas e produzam resultados válidos de data e hora ou intervalo de acordo com o calendário gregoriano ")
Consulte o manual para obter detalhes:
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
Outra coisa:
Então por que você está usando um
INSERT
declaração? Para alterar os dados das linhas existentes você deve usar UPDATE
. Então parece que o que você está realmente procurando é algo assim:update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';