Пример:
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')
вернуть разные результаты
Пример:
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')
вернуть разные результаты
YY позволяет получить всего две цифры года, например, 99 в 1999. Другие цифры (19) автоматически присваиваются текущему века. RR преобразует двузначные годы в четырехзначные годы путем округления.
50-99 хранятся в 1950-1999 годах, а даты, заканчивающиеся в 00-49, сохраняются как 2000-2049. RRRR принимает четырехзначный ввод (хотя это и не требуется), и преобразует двузначные даты в RR. ГГГГ принимает 4-значные входы, но не делает сделать любую дату преобразования
По сути, ваш первый пример предполагает, что 81 - 2081, тогда как RR - 1981. Таким образом, первый пример не должен возвращать строки, поскольку вы, скорее всего, не нанимали ни одного парня после 1 мая 2081 года: -)
Мой последний опыт 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
/тр
y2k совместимость. rr предполагает, что 01 будет 2001, yy предполагает, что 01 будет 1901
см.: http://www.oradev.com/oracle_date_format.jsp
Редактировать: damn! michael "quickfingers" stum избили меня!
/тр
RR отображает четыре цифры в 1999 или 2015 году (если он составляет < 49, то он рассмотрит 20-й век)
О RR или RRRR:
Когда мы вставляем даты с 2 децитами лет, т.е. 09/окт/15
то оракул может автоматически изменить столетия, следовательно,
молчание - это 4-значные даты. Но версия с 4-градусами представлена в
некоторые результирующие версии, для решения этой проблемы
в ранних версиях был RR или RRRR, но обратите внимание, что он работает только
с функцией TO_DATE(), но не с функцией TO_CHAR().
Когда когда-либо вставляются/обновляются по датам, мы всегда должны уточнять текущую дату, запущенную в часах, в связи с переводом даты, так как Oracle проводит каждую трансляцию даты, обращаясь к серверу.
Чтобы сохранить согласованность между столетиями, всегда лучше выполнять перевод даты с 4-х лет.
О YY или YYYY:
Он принимает даты, но не имеет функций для автоматического его изменения.
Это изображение показывает поведение при вставке даты с двумя деиствами без i.e. 09/окт/15
RR означает после 1990 года, а yy принимает 90 как 2090.... поскольку мы находимся в текущем году,...