Подтвердить что ты не робот

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

Пример:

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')

вернуть разные результаты

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

@Майкл Стум

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

uhm, было ли это, до 2000?: Р

...

Будете ли вы всегда считать 19xx?

в соответствии с вашим источником, мы получаем следующие сценарии:

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 

/тр

Ответ 4

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

Ответ 5

О RR или RRRR:

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

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

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

О YY или YYYY:

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

Это изображение показывает поведение при вставке даты с двумя деиствами без i.e. 09/окт/15

Ответ 6

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