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

vấn đề với hàm to_date với sysdate

Tôi muốn giải thích lý do tại sao bạn nhận được các kết quả khác nhau.

Xem sqlfiddle này

Như đã nói, sysdate được xem là DATE nhập và bạn đang thực hiện một chuyển đổi ngầm khi

select to_date(sysdate, format) from dual;

bởi vì tham số đầu tiên của to_date nên là kiểu varchar mà hệ thống thực hiện:

select to_date(to_char(sysdate), format) from dual;

bởi vì định dạng ngày ngầm định của bạn là 'DD-MON-YY' , truy vấn của bạn chuyển thành:

SELECT TO_CHAR(to_date('01-JAN-13', 'DD-MON-yy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-yyyy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rr'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rrrr'), 'DAY')
FROM dual;

ngày_năm thứ hai, bởi vì yyyy là định dạng hàng nghìn năm đầy đủ, chuyển đến '01 -JAN-0013 'là 13AD và có thể là CHỦ NHẬT :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng ngày trong ràng buộc kiểm tra, Oracle

  2. SQL Oracle LEFT JOIN và lỗi SUBQUERY:ORA-00905:thiếu từ khóa

  3. Kết nối bên trong SQL trên các câu lệnh chọn

  4. Hàm JSON_ARRAY () trong Oracle

  5. Làm cách nào để thay thế các giá trị cụ thể trong cột cơ sở dữ liệu oracle?