sql >> Database >  >> RDS >> Oracle

maanden toevoegen aan een datum SQL

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


  1. Oracle SQL Update-query duurt dagen om te updaten

  2. update gebruikerslijst in groep:UPDATE of DELETE + INSERT

  3. Waarom wordt een GRANT USAGE aangemaakt wanneer ik een gebruiker voor het eerst rechten toeken?

  4. Het ingebouwde COPY-commando van Postgresql met geparametriseerde query