add_months()関数の使用法が正しくありません。 2つの単語ではなく、1つの単語(アンダースコア付き)です
add_months(datesold, 1)
アンダースコア_
に注意してください ADD
の間 およびMONTHS
。演算子ではなく関数呼び出しです。
または、次を使用することもできます:
datesold + INTERVAL '1' month
ただし、間隔を使用した算術は、日付値の月の値を単に「インクリメント」するため、制限されている(壊れていない場合)ことに注意してください。これにより、日付が無効になる可能性があります(1月から2月など)。これは文書化された動作ですが(以下のリンクを参照)、これはバグだと思います(SQL標準では、これらの操作で「算術演算は日付と時刻に関連付けられた自然な規則に従い、グレゴリオ暦に従って有効な日時または間隔の結果を生成する」必要があります。 / em> ")
詳細については、マニュアルを参照してください。
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
別のこと:
では、なぜINSERT
を使用しているのですか 声明?既存の行のデータを変更するには、UPDATE
を使用する必要があります 。ですから、あなたが本当に求めているのは次のようなもののようです:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';