sql >> Databáze >  >> RDS >> Oracle

přidání měsíců k datu SQL

Vaše použití funkce add_months() je nesprávné. Nejsou to dvě slova, je to jen jedno (s podtržítkem)

add_months(datesold, 1)

poznamenejte si podtržítko _ mezi ADD a MONTHS . Je to volání funkce, nikoli operátor.

Případně můžete použít:

datesold + INTERVAL '1' month

I když stojí za zmínku, že aritmetika s intervaly je omezená (pokud není porušena), protože jednoduše "zvyšuje" hodnotu měsíce hodnoty data. To může vést k neplatným datům (např. od ledna do února). Ačkoli se jedná o zdokumentované chování (viz níže uvedené odkazy), považuji to za chybu (standard SQL vyžaduje, aby tyto operace „Aritmetika dodržovala přirozená pravidla spojená s daty a časy a poskytovala platné výsledky data a času nebo intervalu podle gregoriánského kalendáře ")

Podrobnosti naleznete v příručce:
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

Další věc:

Proč tedy používáte INSERT tvrzení? Chcete-li změnit data existujících řádků, měli byste použít UPDATE . Zdá se tedy, že to, co ve skutečnosti hledáte, je něco takového:

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


  1. Počítání všech příspěvků patřících do kategorie A jejích podkategorií

  2. Chyba při připojování k databázi:(pomocí třídy org.gjt.mm.mysql.Driver)

  3. Vytvořte neměnný klon concat_ws

  4. jak můžeme získat hodnotu VARRAY z parametru IN v proceduře