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

Không thể hiểu cách giá trị được chuyển đổi hoàn toàn sang định dạng ngày tháng

Quy tắc chuyển đổi chuỗi thành ngày cho phép các quy tắc định dạng bổ sung (mà không áp dụng bất kỳ công cụ sửa đổi nào khác). Vì vậy:

  • MM cũng khớp với MONMONTH;
  • MON khớp với MONTH (và ngược lại);
  • RR khớp với RRRR; và
  • Dấu câu là tùy chọn.

Vì vậy:

SELECT TO_DATE( '10AUGUST2016', 'DD-MM-RR'    ) FROM DUAL UNION ALL
SELECT TO_DATE( '10AUGUST2016', 'DD-MON-RR'   ) FROM DUAL UNION ALL
SELECT TO_DATE( '10AUGUST2016', 'DD-MONTH-RR' ) FROM DUAL UNION ALL
SELECT TO_DATE( '10AUG2016',    'DD-MM-RR'    ) FROM DUAL UNION ALL
SELECT TO_DATE( '10AUG2016',    'DD-MON-RR'   ) FROM DUAL UNION ALL
SELECT TO_DATE( '10AUG2016',    'DD-MONTH-RR' ) FROM DUAL;

Tất cả tạo ra ngày 2016-08-10T00:00:00 .

Bạn có thể ngăn điều này bằng cách sử dụng FX mô hình định dạng

Sau đó:

SELECT TO_DATE( '10-AUGUST-2016', 'FXDD-MM-RR'    ) FROM DUAL;

Cung cấp:ORA-01858: a non-numeric character was found where a numeric was expected và sẽ chỉ khớp khi tìm thấy một mẫu khớp chính xác (mặc dù RR sẽ vẫn khớp với RRRR ).

Có, oracle đang ngầm sử dụng TO_DATE( '10AUGUST2016', NLS_DATE_FORMAT ) để thực hiện chuyển đổi.

Nếu bạn sử dụng:

ALTER SESSION SET NLS_DATE_FORMAT = 'FXDD-MM-RR';

Sau đó, chèn của bạn sẽ không thành công.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tính năng tự động gia tăng oracle với trình tự và trình kích hoạt không hoạt động chính xác

  2. Truy vấn Oracle để tìm chuỗi không chứa ký tự

  3. Java:Gọi một thủ tục được lưu trữ trong cơ sở dữ liệu oracle

  4. Cuộc phiêu lưu mua hàng nhẹ nhàng

  5. Kiểm tra Chuỗi ký tự có phải là ngày hợp lệ hay không