Ihre Verwendung der Funktion add_months() ist falsch. Es sind nicht zwei Wörter, sondern nur eines (mit Unterstrich)
add_months(datesold, 1)
Beachten Sie den Unterstrich _
zwischen ADD
und MONTHS
. Es ist ein Funktionsaufruf, kein Operator.
Alternativ können Sie auch verwenden:
datesold + INTERVAL '1' month
Obwohl es erwähnenswert ist, dass die Arithmetik mit Intervallen begrenzt (wenn nicht kaputt) ist, weil sie einfach den Monatswert des Datumswerts "erhöht". Das kann zu ungültigen Daten führen (z. B. von Januar bis Februar). Obwohl dies ein dokumentiertes Verhalten ist (siehe untenstehende Links), halte ich dies für einen Fehler (der SQL-Standard erfordert, dass diese Operationen "Arithmetik den natürlichen Regeln für Datum und Uhrzeit gehorchen und gültige Datums- und Intervallergebnisse gemäß dem gregorianischen Kalender liefern". /em> ")
Einzelheiten finden Sie im Handbuch:
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
Noch was:
Warum verwenden Sie dann ein INSERT
Aussage? Um die Daten bestehender Zeilen zu ändern, sollten Sie UPDATE
verwenden . Es scheint also, was Sie wirklich suchen, ist etwas wie das:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';