Việc sử dụng hàm add_months () của bạn không chính xác. Nó không phải là hai từ, nó chỉ là một (có dấu gạch dưới)
add_months(datesold, 1)
lưu ý dấu gạch dưới _
giữa ADD
và MONTHS
. Đó là cuộc gọi hàm không phải là một toán tử.
Ngoài ra, bạn có thể sử dụng:
datesold + INTERVAL '1' month
Mặc dù cần lưu ý rằng số học với các khoảng bị giới hạn (nếu không muốn nói là bị hỏng) vì nó chỉ đơn giản là "tăng" giá trị tháng của giá trị ngày. Điều đó có thể dẫn đến các ngày không hợp lệ (ví dụ:từ tháng 1 đến tháng 2). Mặc dù đây là hành vi được ghi lại bằng tài liệu (xem các liên kết bên dưới), tôi coi đây là một lỗi (tiêu chuẩn SQL yêu cầu các hoạt động đó phải " Số học tuân theo các quy tắc tự nhiên được liên kết với ngày và giờ và mang lại kết quả ngày hoặc khoảng thời gian hợp lệ theo lịch Gregory ")
Xem hướng dẫn để biết chi tiết:
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
Một điều khác:
Vậy tại sao bạn lại sử dụng INSERT
bản tường trình? Để thay đổi dữ liệu của các hàng hiện có, bạn nên sử dụng UPDATE
. Vì vậy, có vẻ như những gì bạn thực sự theo đuổi là một cái gì đó như thế này:
update auctions
set datesold = add_months(datesold, 1)
where item = 'Radio';