Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

adicionando meses a uma data SQL


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';