오라클의 'yy'와 'rr' 날짜 마스크의 차이점은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/19058

  •  09-06-2019
  •  | 
  •  

문제

예:

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

다른 결과를 반환

도움이 되었습니까?

해결책

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

YY를 사용하면 1999 년 99 개와 같은 1 년의 2 자리 만 검색 할 수 있습니다.다른 숫자 (19)는 현재 세기에 자동으로 할당됩니다.RR은 반올림을 통해 두 자리 연도를 네 자리 연도로 변환합니다.

50-99는 1950-1999로 저장되며 00-49의 날짜는 2000-2049로 저장됩니다.RRRR은 4 자리 입력을 수락하고 (필수는 아니지만) RR과 마찬가지로 2 자리 날짜를 변환합니다.YYYY는 4 자리 입력을 수락합니다

기본적으로 첫 번째 예에서는 81이 2081이라고 가정하고 RR 예에서는 1981을 가정합니다.따라서 첫 번째 예에서는 2081년 5월 1일 이후 아직 직원을 고용하지 않았을 가능성이 높으므로 어떤 행도 반환해서는 안 됩니다. :-)

다른 팁

@마이클 스텀

나의 마지막 Oracle 경험은 조금 오래 전입니다.

음, 2000년 이전이었나요?:피

...

yy는 항상 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

y2k 호환성.rr은 01을 2001년으로 가정하고, yy는 01을 1901로 가정합니다.

보다: http://www.oradev.com/oracle_date_format.jsp

편집하다:젠장! 마이클 "퀵핑거스" 스텀 나를 이겼어!

/mp

RR은 1999년 또는 2015년으로 네 자리 숫자를 표시합니다(49보다 작으면 20세기로 간주함).

RR 또는 RRRR 정보

2자리 연도의 날짜를 삽입하는 경우(예:09/Oct/15) 그러면 Oracle은 수세기를 자동으로 변경하므로 솔루션은 4 자리 날짜입니다.그러나 4 자리 버전은 최근 버전으로 소개되므로 이전 버전 에서이 문제에 대한 솔루션은 다음과 같습니다. RR 또는 RRRR.그러나 그것과 만 작동합니다 TO_DATE() 기능은 있지만 TO_CHAR() 기능.

날짜에 대한 삽입/업데이트가 수행될 때마다 Oracle은 서버에 접속하여 모든 날짜 변환을 수행하므로 날짜 변환과 관련하여 시계에서 실행되는 현재 날짜를 항상 명확히 해야 합니다.

세기 간의 일관성을 유지하려면 항상 4자리 연도로 날짜 변환을 실행하는 것이 좋습니다.

YY 또는 YYYY 정보

날짜를 허용하지만 자동으로 변경하는 기능은 없습니다.

이 이미지는 두 자리 날짜를 삽입할 때의 동작을 보여줍니다(예:10월 9일/15)

RR은 1990년 이후를 나타내고 yy는 90을 2090년으로 가정합니다....현재 연도와 마찬가지로...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top