L'utilizzo della funzione add_months() non è corretto. Non sono due parole, è solo una (con un trattino basso)
add_months(datesold, 1)
nota il carattere di sottolineatura _
tra ADD
e MONTHS
. È una chiamata di funzione non un operatore.
In alternativa potresti usare:
datesold + INTERVAL '1' month
Anche se vale la pena notare che l'aritmetica con intervalli è limitata (se non interrotta) perché semplicemente "incrementa" il valore del mese del valore della data. Ciò può portare a date non valide (ad es. da gennaio a febbraio). Sebbene questo sia un comportamento documentato (vedi i collegamenti sotto) lo considero un bug (lo standard SQL richiede che tali operazioni "L'aritmetica obbedisca alle regole naturali associate a date e orari e produca risultati di datetime o intervalli validi secondo il calendario gregoriano ")
Vedere il manuale per i dettagli:
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
Un'altra cosa:
Allora perché stai usando un INSERT
dichiarazione? Per modificare i dati delle righe esistenti dovresti usare UPDATE
. Quindi sembra che quello che stai veramente cercando sia qualcosa del genere:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';