codememo

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

tipmemo 2023. 6. 17. 09:25
반응형

오라클의 'yyy' 날짜 마스크와 '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')

다른 결과를 반환합니다.

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

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

50-99는 1950-1999로 저장되고 00-49로 끝나는 날짜는 2000-2049로 저장됩니다. RRR은 4자리 입력을 허용하고(필수는 아니지만) RR과 마찬가지로 2자리 날짜를 변환합니다.YYYY는 4자리 입력을 허용하지만 날짜 변환을 수행하지 않습니다.

기본적으로 첫 번째 예제에서는 81이 2081이라고 가정하는 반면 RR은 1981이라고 가정합니다.그래서 첫 번째 예시는 2081년 5월 이후에 아직 남자를 고용하지 않았을 가능성이 높기 때문에 행을 반환하지 않아야 합니다 :-)

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

참조: http://www.oradev.com/oracle_date_format.jsp

편집: 젠장! 마이클 "빠른 손가락" 스텀이 나를 이겼습니다!

/mp

@마이클 스텀

제 마지막 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

RR은 1999 또는 2015로 네 자리를 표시합니다(49 미만이면 20세기를 고려합니다).

RR 또는 RRRR 정보

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

Oracle은 서버에 연락하여 모든 날짜 변환을 수행하므로 날짜 삽입/업데이트를 수행할 때마다 해당 날짜 변환과 관련하여 시계에서 실행 중인 현재 날짜를 항상 명확히 해야 합니다.

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

YY 또는 YYY 정보

날짜는 승인되지만 자동으로 변경할 수 있는 기능은 없습니다.

이 이미지는 날짜를 두 자리 숫자(예: 09/oct/15)로 삽입할 때의 동작을 보여줍니다.

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

언급URL : https://stackoverflow.com/questions/19058/what-is-the-difference-between-oracles-yy-and-rr-date-mask

반응형