Uw gebruik van de functie add_months() is onjuist. Het zijn geen twee woorden, het is er maar één (met een onderstrepingsteken)
add_months(datesold, 1)
let op het onderstrepingsteken _
tussen ADD
en MONTHS
. Het is een functieaanroep, geen operator.
U kunt ook het volgende gebruiken:
datesold + INTERVAL '1' month
Hoewel het vermeldenswaard is dat de rekenkunde met intervallen beperkt is (zo niet verbroken) omdat het gewoon de maandwaarde van de datumwaarde "verhoogt". Dat kan leiden tot ongeldige datums (bijvoorbeeld van januari tot februari). Hoewel dit gedocumenteerd gedrag is (zie onderstaande links), beschouw ik dit als een bug (de SQL-standaard vereist dat deze bewerkingen "Rekenen gehoorzamen aan de natuurlijke regels die zijn gekoppeld aan datums en tijden en geldige datetime- of intervalresultaten opleveren volgens de Gregoriaanse kalender ")
Zie de handleiding voor details:
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
Nog iets:
Waarom gebruik je dan een INSERT
uitspraak? Om de gegevens van bestaande rijen te wijzigen, moet u UPDATE
. gebruiken . Dus het lijkt erop dat je echt op zoek bent naar zoiets als dit:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';