sql >> Base de Datos >  >> RDS >> Oracle

agregando meses a una fecha SQL

Su uso de la función add_months() es incorrecto. No son dos palabras, es solo una (con un guión bajo)

add_months(datesold, 1)

tenga en cuenta el guión bajo _ entre ADD y MONTHS . Es una llamada de función, no un operador.

Alternativamente, podría usar:

datesold + INTERVAL '1' month

Aunque vale la pena señalar que la aritmética con intervalos es limitada (si no se rompe) porque simplemente "incrementa" el valor del mes del valor de la fecha. Eso puede dar lugar a fechas no válidas (por ejemplo, de enero a febrero). Aunque este es un comportamiento documentado (vea los enlaces a continuación), lo considero un error (el estándar SQL requiere que esas operaciones "La aritmética obedezca las reglas naturales asociadas con fechas y horas y arroje resultados válidos de fecha y hora o intervalo de acuerdo con el calendario gregoriano ")

Consulte el manual para obtener más información:
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

Otra cosa:

Entonces, ¿por qué estás usando un INSERT? ¿declaración? Para cambiar los datos de las filas existentes, debe usar UPDATE . Así que parece que lo que realmente buscas es algo como esto:

update auctions
   set datesold = add_months(datesold, 1)
where item = 'Radio';