Oracle
 sql >> база данни >  >> RDS >> Oracle

RR срещу YY в Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да преброя броя на думите в низ в Oracle?

  2. Добавете ден към Timestamp

  3. Как да извлечете данни от две колони във формат A,B в Oracle

  4. Как да извлечете текущата стойност на последователност от оракул, без да я увеличавате?

  5. Как да изпълним Oracle sql скрипт чрез java код