Nếu 2 chữ số đầu tiên trong năm nay không được chỉ định trong ngày được chuyển đổi:
- YYYY sẽ luôn luôn trở lại năm nay.
- RRRR trả về năm dựa trên năm được chỉ định hiện tại trong cơ sở dữ liệu.
Hãy thử mẫu mã này:
SELECT TO_DATE ('010199', 'MMDDYYYY') AS date_a,
TO_DATE ('010199', 'MMDDYY') AS date_b,
TO_DATE ('010199', 'MMDDRR') AS date_c,
TO_DATE ('010199', 'MMDDRRRR') AS date_d
FROM DUAL;
Kết quả khi chạy trên 2014/12/01:
DATE_A DATE_B DATE_C DATE_D
--------- --------- --------- ---------
1/1/0099 1/1/2099 1/1/1999 1/1/1999
này oracle link đưa ra một mô tả tuyệt vời và các ví dụ.
Từ trên link:
- Nếu quy định năm hai chữ số là 00-49, sau đó
- Nếu hai số cuối của năm nay là 00 đến 49, thì năm trả về có hai chữ số đầu tiên giống như năm hiện tại.
- Nếu hai chữ số cuối của năm hiện tại là 50 đến 99, thì 2 chữ số đầu tiên của năm được trả lại là 1 lớn hơn 2 chữ số đầu tiên của năm hiện tại.
- Nếu quy định năm hai chữ số là 50 đến 99, sau đó
- Nếu hai số cuối của năm nay là 00-49, sau đó 2 chữ số đầu tiên của năm trở lại là 1 ít hơn 2 chữ số đầu tiên của năm hiện tại.
- Nếu hai số cuối của năm hiện tại là 50 đến 99, thì năm trả về có hai số đầu tiên giống như năm hiện tại.
Nguồn
2014-12-01 15:43:05
Ngay cả mã của bạn tương tự như những gì bạn đã được đăng ở đây (tôi nói tương tự vì SQL 'select' không được phép trong một khối PL/SQL, thay vì' chọn into' phải được sử dụng) có thể được đặt trong một khối PL/SQL câu hỏi của bạn không phải là PL/SQL liên quan ở tất cả, nhưng vấn đề Oracle SQL. – user272735
Rtm. Nó nhanh hơn! http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements004.htm#i34924 – zep