Сведения о вопросе

FromRussia

03:32, 18th August, 2020

Теги

sql   oracle    

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

Просмотров: 675   Ответов: 6

Пример:

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

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



  Сведения об ответе

P_S_S

15:08, 29th August, 2020

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. YYYY принимает 4-значные входные сигналы, но не делает этого сделайте любое преобразование даты

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


  Сведения об ответе

+-*/

15:04, 11th August, 2020

@ Михаил Бурчак

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

это было до 2000 года? :p ...

Гг будет всегда считать 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 

/mp


  Сведения об ответе

lesha

03:43, 19th August, 2020

совместимость с y2k. РР предполагает, 01 Для 2001, гг предполагает, 01 к 1901

смотрите: http://www.oradev.com/oracle_date_format.jsp

правка: блин! Майкл "quickfingers" Стам опередил меня !

/mp


  Сведения об ответе

ITSME

21:06, 1st October, 2020

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


  Сведения об ответе

VERSUION

17:22, 6th August, 2020

О RR или RRRR

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

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

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

О YY или YYYY

Он принимает даты, но не имеет возможности автоматически изменить их.

Это изображение показывает поведение при вставке даты с двумя цифрами (т. е. 09/oct/15)


  Сведения об ответе

baggs

10:14, 24th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться