Когато форматираме дати в Oracle Database, имаме опцията да използваме RR и YY за да върнете двуцифрена година.
Тези два елемента на формат са сходни. Разликата е в това как тълкуват двуцифрените години.
Имаме и опцията да използваме RRRR и YYYY при връщане на четирицифрени години.
Пример
Ето пример, който сравнява RR и YY форматни елементи:
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; Резултат:
RR YY _______ _______ 1981 2081
Можем да видим, че RR интерпретира годината 81 като 1981, докато YY интерпретира го като 2081.
- Когато използвате
YY, върнатата година винаги има същите първи 2 цифри като текущата година. - С
RR, векът на върнатата стойност варира в зависимост от посочената двуцифрена година и последните две цифри на текущата година.
Ето как го обяснява документацията на Oracle:
- Ако посочената двуцифрена година е от 00 до 49, тогава
- Ако последните две цифри на текущата година са от 00 до 49, тогава върнатата година има същите първи две цифри като текущата година.
- Ако последните две цифри на текущата година са от 50 до 99, тогава първите 2 цифри на върнатата година са с 1 по-големи от първите 2 цифри на текущата година.
- Ако посочената двуцифрена година е от 50 до 99, тогава
- Ако последните две цифри на текущата година са от 00 до 49, тогава първите 2 цифри на върнатата година са с 1 по-малко от първите 2 цифри на текущата година.
- Ако последните две цифри на текущата година са от 50 до 99, тогава върнатата година има същите първи две цифри като текущата година.
RRRR и YYYY Елементи на формат
Ето пример, който сравнява RRRR и YYYY форматни елементи:
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; Резултат:
RRRR YYYY _______ _______ 1981 0081
В този случай RRRR връща същата година, в която RR направи, но YYYY връща годината 0081.
Горните примери предполагат, че знаете как TO_CHAR() и TO_DATE() работа. Вижте Oracle TO_CHAR(datetime) Функция и Oracle TO_DATE() Функция в Oracle за повече информация.