В чем разница между маской даты «yy» и «rr»?


19

Пример:

select ename from emp where hiredate = todate('01/05/81','dd/mm/yy') 

и

select ename from emp where hiredate = todate('01/05/81','dd/mm/rr') 

различные результаты

33

http://oracle.ittoolbox.com/groups/technical-functional/oracle-dev-l/difference-between-yyyy-and-rrrr-format-519525

YY позволяет получить только две цифры года, к примеру, 99 в 1999. Другие цифры (19) являются автоматическими y, присвоенный текущему век. RR преобразует двузначные годы в четырехзначные годы путем округления.

50-99 хранятся как 1950-1999 годы, а даты, заканчивающиеся на 00-49, хранятся как 2000-2049. RRRR принимает четырехзначный ввод (хотя и не обязательный), а преобразует двузначные даты с помощью RR. YYYY принимает 4-значные входы butdoesn't сделать любую дату преобразования

По сути, ваш первый пример будет считать, что 81 является 2081, тогда как один RR предполагает 1981 г. Таким образом, первый пример не возвращает ни одной строки, как вы больше всего скорее всего, не нанял ни одного парня после 1 мая 2081 года :-)


4

y2k совместимость. р-р 01 предполагает, что 2001, уу предполагает 01 быть 1901

см: http://www.oradev.com/oracle_date_format.jsp

редактировать: блин! michael "quickfingers" stumbeat me to it!

/тр


5

@Michael Stum

Мой последний опыт Oracle немного давно

ммм, это было до 2000 года? : Р

...

Будет YY всегда предполагать 19XX?

according to your source, мы получаем следующие сценарии:

USING 
ENTERED 
STORED 
SELECT of date column 


YY 
22-FEB-01 
22-FEB-1901 
22-FEB-01 


YYYY 
22-FEB-01 
22-FEB-0001 
22-FEB-0001 


RR 
22-FEB-01 
22-FEB-2001 
22-FEB-01 


RRRR 
22-FEB-01 
22-FEB-2001 
22-FEB-2001 

/тр


-1

RR стенды для после 1990 года и уу предполагает 90 в 2090 .... как мы в текущем год, ...

  0

Нету ... 'rr' отличается в зависимости от того, являетесь ли вы [до 50 года прошлого века] (http://docs.oracle.com/cd/E11882_01/server.112/ e26088/sql_elements004.htm # i116004) или нет. 18 ноя. 122012-11-18 18:10:12


1

RR отображает четыре цифры, как 1999 или 2015 (если это < 49, то он будет считать 20 век)


0

О RR или RRRR:

Когда мы вставляем даты с 2 degits лет т.е. 09/октябрь/15
то оракул может изменяет века автоматически, следовательно, silution является 4 цифрой dates.But 4 DEGIT версия введен в некоторой флуоресцентная версия, htere переднего план решений этой проблему в более ранних версиях была RR или RRRR, Но учтите, что он работает только с функцией TO_DATE(), но не с функцией TO_CHAR().

Когда какие-либо вставки/обновления проводятся по датам, мы всегда должны уточнять текущую дату, запущенную в часах, в связи с переводом даты, поскольку Oracle проводит каждый перевод Дат, связываясь с сервером.

Чтобы сохранить согласованность между веками, всегда лучше выполнять перевод даты с четырьмя годами деградации.

О YY или YYYY:

Он принимает даты, но оленья кожа имеет функциональные возможности автоматически изменять его.

This Image shows behaviour when inserting date with two degit no i.e. 09/oct/ 15