Когато форматираме дати в 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 за повече информация.