Oracle
 sql >> Database >  >> RDS >> Oracle

aggiungendo mesi a una data SQL

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