Khi định dạng ngày tháng trong Cơ sở dữ liệu Oracle, chúng tôi có tùy chọn sử dụng RR
và YY
để trả về một năm có hai chữ số.
Hai yếu tố định dạng này tương tự nhau. Sự khác biệt là ở cách họ giải thích hai chữ số năm.
Chúng tôi cũng có tùy chọn sử dụng RRRR
và YYYY
khi trả về năm bốn chữ số.
Ví dụ
Dưới đây là một ví dụ so sánh RR
và YY
phần tử định dạng:
SELECT
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RR'), 'YYYY') AS "RR",
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YY'), 'YYYY') AS "YY"
FROM DUAL;
Kết quả:
RR YY _______ _______ 1981 2081
Chúng ta có thể thấy rằng RR
giải thích năm 81 là 1981, trong khi YY
diễn giải nó là 2081.
- Khi sử dụng
YY
, năm trả về luôn có cùng 2 chữ số đầu tiên với năm hiện tại. - Với
RR
, thế kỷ của giá trị trả về thay đổi theo năm có hai chữ số được chỉ định và hai chữ số cuối cùng của năm hiện tại.
Đây là cách tài liệu Oracle giải thích điều đó:
- Nếu năm có hai chữ số được chỉ định là 00 đến 49, thì
- Nếu hai chữ số cuối cùng của năm hiện tại là 00 đến 49, thì năm trả về có cùng hai chữ số đầu tiên với năm hiện tại.
- Nếu hai chữ số cuối cùng của năm hiện tại là 50 đến 99, thì 2 chữ số đầu tiên của năm trả về là 1 lớn hơn 2 chữ số đầu tiên của năm hiện tại.
- Nếu năm có hai chữ số được chỉ định là 50 đến 99, thì
- Nếu hai chữ số cuối của năm hiện tại là 00 đến 49, thì 2 chữ số đầu tiên của năm trả về nhỏ hơn 1 chữ số đầu tiên của năm hiện tại.
- Nếu hai chữ số cuối cùng của năm hiện tại là 50 đến 99, thì năm trả về có cùng hai chữ số đầu tiên với năm hiện tại.
RRRR
và YYYY
Phần tử định dạng
Dưới đây là một ví dụ so sánh RRRR
và YYYY
phần tử định dạng:
SELECT
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RRRR'), 'YYYY') AS "RRRR",
TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YYYY'), 'YYYY') AS "YYYY"
FROM DUAL;
Kết quả:
RRRR YYYY _______ _______ 1981 0081
Trong trường hợp này, RRRR
trả về cùng năm với RR
đã làm, nhưng YYYY
trả về năm 0081.
Các ví dụ trên giả định rằng bạn biết cách TO_CHAR()
và TO_DATE()
công việc. Xem Oracle TO_CHAR(datetime)
Hàm và Oracle TO_DATE()
Hàm trong Oracle để biết thêm thông tin.