programing

Oracle SQL에서 'YYYY'와 'RRR'의 차이점은 무엇입니까?

iphone6s 2023. 6. 16. 21:32
반응형

Oracle SQL에서 'YYYY'와 'RRR'의 차이점은 무엇입니까?

SQL에 두 가지 쿼리가 있습니다.

select trunc(to_date('27-Jul-1987'),'YYYY') FROM dual; 

그리고.

select trunc(to_date('27-Jul-1987'),'RRRR') FROM dual; 

둘 다 저에게 같은 결과를 주고 있습니다.'RRR'과 'YYY'의 차이점은 무엇입니까?

YYYY현재 연도를 4자리로 지정합니다.

RRRRformat은 범위에서 두 자리 연도를 의미합니다.00로.49현재 세기(즉, 현재 연도와 처음 두 자리 수가 동일)로 가정되며, 다음과 같은 연도가 지정됩니다.50통해.99이전 세기에 있었던 것으로 추정됩니다.

변환할 날짜에 해당 연도의 처음 두 자리가 지정되지 않은 경우:

  • YYYY는 항상 현재 연도를 반환합니다.
  • RRR은 데이터베이스의 현재 지정된 연도를 기준으로 연도를 반환합니다.

다음 샘플 코드를 사용해 보십시오.

SELECT TO_DATE ('010199', 'MMDDYYYY') AS date_a,
       TO_DATE ('010199', 'MMDDYY') AS date_b,
       TO_DATE ('010199', 'MMDDRR') AS date_c,
       TO_DATE ('010199', 'MMDDRRRR') AS date_d
  FROM DUAL;

2014년 12월 1일 실행 시 결과:

 DATE_A       DATE_B       DATE_C        DATE_D   
 ---------    ---------    ---------     ---------  
 1/1/0099      1/1/2099     1/1/1999      1/1/1999

오라클 링크는 훌륭한 설명과 예제를 제공합니다.

링크에서:

  • 지정된 두 자리 연도가 00 ~ 49인 경우,
    • 현재 연도의 마지막 두 자리가 00 ~ 49이면 반환된 연도의 처음 두 자리가 현재 연도와 동일합니다.
    • 현재 연도의 마지막 두 자리 수가 50에서 99 사이인 경우 반환된 연도의 처음 두 자리 수는 현재 연도의 처음 두 자리 수보다 1 큽니다.
  • 지정된 두 자리 연도가 50 ~ 99인 경우
    • 현재 연도의 마지막 두 자리가 00 ~ 49인 경우 반환된 연도의 처음 두 자리는 현재 연도의 처음 두 자리보다 1 작습니다.
    • 현재 연도의 마지막 두 자리 수가 50에서 99 사이이면 반환된 연도의 처음 두 자리 수가 현재 연도와 동일합니다.

다음 항목:

SQL> select  to_char(to_date('72-01-01','rrrr-mm-dd'),'yyyy') from dual;

다음을 제공합니다.

1972

하지만 이것은:

SQL> select  to_char(to_date('72-01-01','yyyy-mm-dd'),'yyyy') from dual;

다음을 제공합니다.

0072

언급URL : https://stackoverflow.com/questions/6812916/what-is-the-difference-between-yyyy-and-rrrr-in-oracle-sql

반응형