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

Tại sao tôi không thể nhập ngày này vào bảng bằng sql?

Oracle sẽ thực hiện TO_DATE ngầm hiểu trên các ký tự không phải ngày tháng khi chèn chúng vào DATE cột sử dụng giá trị của NLS_DATE_FORMAT như mặt nạ định dạng. Nếu ký tự không phải ngày tháng khớp với định dạng này thì nó sẽ hoạt động (và nếu không thì nó sẽ không hoạt động) - tuy nhiên, nếu NLS_DATE_FORMAT đã từng được thay đổi thì nó sẽ ngay lập tức bị hỏng (bất kỳ lỗi nào rất khó gỡ lỗi vì mã đang hoạt động sẽ không hoạt động nhưng sẽ không có ai thay đổi mã).

Bạn có thể tìm ra NLS_DATE_FORMAT hiện tại của mình với truy vấn:

SELECT VALUE
FROM   NLS_SESSION_PARAMETERS
WHERE  PARAMETER = 'NLS_DATE_FORMAT';

Tốt hơn là sử dụng TO_DATE một cách rõ ràng với mặt nạ định dạng đúng hoặc sử dụng ký tự ngày ANSI (tức là DATE '2014-12-01' ).

insert into employees_table
values(
  05,
  'Sophie',
  'Kuchinskey',
  '[email protected]',
  105,
  5000000,
  60,
  TO_DATE( '20-sep-1994', 'DD-Mon-YYYY' )
);

Hoặc, sử dụng định dạng ANSI bất khả tri ngôn ngữ / địa phương:

insert into employees_table
values(
  05,
  'Sophie',
  'Kuchinskey',
  '[email protected]',
  105,
  5000000,
  60,
  DATE '1994-09-20'
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ Hùng do ORA-16484 TƯƠNG THÍCH

  2. Cơ sở dữ liệu lỗi của Oracle ở đâu?

  3. Làm cách nào để lấy nội dung văn bản từ BLOB trong Oracle SQL

  4. Làm cách nào để đặt bí danh cho một bảng trong Oracle?

  5. Cách chọn và sắp xếp theo cột không có trong câu lệnh Groupy By SQL - Oracle