Din brug af add_months()-funktionen er forkert. Det er ikke to ord, det er bare ét (med en understregning)
add_months(datesold, 1)
bemærk understregningen _
mellem ADD
og MONTHS
. Det er funktionsopkald, ikke en operatør.
Alternativt kan du bruge:
datesold + INTERVAL '1' month
Selvom det er værd at bemærke, at aritmetikken med intervaller er begrænset (hvis den ikke er brudt), fordi den simpelthen "øger" månedsværdien for datoværdien. Det kan føre til ugyldige datoer (f.eks. fra januar til februar). Selvom dette er dokumenteret adfærd (se nedenstående links) betragter jeg dette som en fejl (SQL-standarden kræver, at disse operationer "Aritmetik adlyder de naturlige regler forbundet med datoer og klokkeslæt og giver gyldige datetime eller intervalresultater i henhold til den gregorianske kalender ")
Se manualen for detaljer:
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
En anden ting:
Hvorfor bruger du så en INSERT
udmelding? For at ændre dataene for eksisterende rækker skal du bruge UPDATE
. Så det ser ud til, at det du virkelig er ude efter er noget som dette:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';