Votre utilisation de la fonction add_months() est incorrecte. Ce n'est pas deux mots, c'est juste un (avec un trait de soulignement)
add_months(datesold, 1)
notez le trait de soulignement _
entre ADD
et MONTHS
. C'est un appel de fonction et non un opérateur.
Vous pouvez également utiliser :
datesold + INTERVAL '1' month
Bien qu'il convient de noter que l'arithmétique avec des intervalles est limitée (sinon cassée) car elle "incrémente" simplement la valeur du mois de la valeur de la date. Cela peut entraîner des dates invalides (par exemple de janvier à février). Bien qu'il s'agisse d'un comportement documenté (voir les liens ci-dessous), je considère qu'il s'agit d'un bogue (la norme SQL exige que ces opérations « L'arithmétique obéisse aux règles naturelles associées aux dates et aux heures et produisent des résultats de date/heure ou d'intervalle valides selon le calendrier grégorien ")
Consultez le manuel pour plus de détails :
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
Autre chose :
Alors pourquoi utilisez-vous un INSERT
déclaration? Pour modifier les données des lignes existantes, vous devez utiliser UPDATE
. Il semble donc que ce que vous recherchez vraiment ressemble à ceci :
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';