Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

thêm tháng vào SQL ngày tháng

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 ADDMONTHS . Đó 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';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy giá trị của các tham số liên kết từ đối tượng Oracle JDBC PreparedStatement

  2. Hàm SESSIONTIMEZONE trong Oracle

  3. Đóng ResultSet nhưng không đóng PreparedStatement

  4. Sử dụng mệnh đề IN với một chuỗi được phân tách bằng dấu phẩy từ đầu ra của một hàm Replace () trong Oracle SQL

  5. Thay đổi kiểu dữ liệu trong oracle mà không xóa dữ liệu