Penggunaan fungsi add_months() Anda salah. Ini bukan dua kata, itu hanya satu (dengan garis bawah)
add_months(datesold, 1)
perhatikan garis bawah _
antara ADD
dan MONTHS
. Itu panggilan fungsi bukan operator.
Atau Anda dapat menggunakan:
datesold + INTERVAL '1' month
Meskipun perlu dicatat bahwa aritmatika dengan interval terbatas (jika tidak rusak) karena hanya "menambah" nilai bulan dari nilai tanggal. Itu dapat menyebabkan tanggal yang tidak valid (misalnya dari Januari hingga Februari). Meskipun ini adalah perilaku yang didokumentasikan (lihat tautan di bawah) saya menganggap ini sebagai bug (standar SQL mengharuskan operasi tersebut untuk "Aritmatika mematuhi aturan alami yang terkait dengan tanggal dan waktu dan menghasilkan tanggal waktu atau hasil interval yang valid menurut kalender Gregorian ")
Lihat manual untuk detailnya:
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
Hal lain:
Lalu mengapa Anda menggunakan INSERT
penyataan? Untuk mengubah data baris yang ada Anda harus menggunakan UPDATE
. Jadi sepertinya yang Anda cari adalah seperti ini:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';