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

Các ngày khác nhau Oracle 11g với TOAD

Bạn đang thực hiện nhiều chuyển đổi ngày ngầm trong cả hai phiên bản. Cái này:

SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL; 

tương đương với:

SELECT to_date(to_char(to_date('01-FEB-1949', <NLS_DATE_FORMAT>),
    <NLS_DATE_FORMAT>, <NLS_DATE_FORMAT>)) FROM DUAL;

trong khi truy vấn thứ hai có một trong những truy vấn được thay thế bằng một định dạng cụ thể. Nó trông giống như định dạng mặc định của bạn - mà bạn có thể đặt, tôi tin rằng, trong tùy chọn Toad mà không cần sửa đổi sổ đăng ký trực tiếp; không rõ bạn thậm chí đang sửa đổi thứ gì đó liên quan đến Toad - là DD-MON-RR , như được hiển thị bằng cách cắm nó vào các truy vấn sau:

SELECT to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
        'DD-MON-RR'),'DD-MON-RR') AS date1,
    to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
        'dd-MON-yyyy'),'DD-MON-RR') AS date2 FROM DUAL;

DATE1                            DATE2
February, 01 2049 00:00:00+0000  February, 01 1949 00:00:00+0000

( SQL Fiddle )

Bạn có thể xem trong SQL Fiddle này rằng trong phiên bản đầu tiên, ngày xuất hiện dưới dạng chuỗi với năm là 49 chứ không phải là 1949 và điều đó sau đó được diễn giải - bởi RR mask - as 2049 , đó là hành vi được mong đợi.

Phiên bản ngắn:không bao giờ dựa vào các chuyển đổi ngày tháng ngầm định hoặc mặt nạ định dạng ngày NLS.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình điều khiển JDBC cho Oracle 10G XE

  2. CHỌN dữ liệu từ một lược đồ khác trong oracle

  3. Oracle - RETURNING kết hợp với các hàm tổng hợp

  4. Chế độ chờ kém

  5. Cài đặt Oracle cho kết nối SSIS (và trình điều khiển 32 64 bit)