오라클 SQL에서 yyrr 날짜 마스크의 이해

오라클 SQL에서 날짜 형식을 다룰 때, 자주 묻는 질문이 있습니다: 오라클의 yyrr 날짜 마스크의 차이는 무엇인가요? 이 차이를 이해하는 것은 특히 두 자릿수 연도 형식을 다룰 때 쿼리 결과에 큰 영향을 미칠 수 있습니다. 이 날짜 마스크를 분해하고 왜 서로 다른 결과를 생성하는지 명확히 해봅시다.

문제 설명

오라클 SQL에서 날짜 조작이나 비교를 수행할 때, 문자열을 날짜 형식으로 변환해야 하는 상황을 마주할 수 있습니다. yyrr 날짜 마스크는 이러한 목적으로 자주 사용됩니다.

다음은 이들의 차이를 보여주는 두 가지 예입니다:

SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/yy');
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/rr');

이 두 쿼리를 실행하면 “81"이라는 연도의 해석에 따라 서로 다른 결과를 반환할 수 있습니다.

날짜 마스크 분석

yy 날짜 마스크

  • 정의: yy 마스크는 두 자릿수 연도를 입력할 수 있게 합니다.
  • 해석: 오라클은 자동으로 두 자릿수가 현재 세기에 해당한다고 가정합니다.
    • 예를 들어, 현재 연도가 2023년이라면 01/05/812081년으로 해석됩니다.
  • 사용 사례: 이로 인해 20세기를 나타내는 날짜의 경우 예상치 못한 결과가 발생할 수 있습니다.

rr 날짜 마스크

  • 정의: rr 마스크도 두 자릿수 연도를 허용하지만, 해석하는 방식이 다릅니다.
  • 해석: 두 자릿수 연도는 전체 연도를 결정하기 위해 반올림됩니다:
    • 50-99: 1950-1999년으로 간주합니다.
    • 00-49: 2000-2049년으로 간주합니다.
  • 예시: 따라서 01/05/811981년으로 해석되며, 이는 대부분의 경우 의도한 참조일 것입니다.

예제 요약

다음은 이 마스크들이 출력에 미치는 방식의 요약입니다:

  • yy를 사용하는 쿼리:
    • 01/05/812081년으로 가정하여, 고용 기록이 없을 가능성이 높습니다.
  • rr를 사용하는 쿼리:
    • 동일한 날짜를 1981년으로 보고, emp 테이블에 고용 기록이 있을 것으로 예상합니다.

결론

오라클 SQL 쿼리를 작성할 때 yyrr의 차이를 이해하는 것은 매우 중요합니다. yy는 미래 연도의 잘못된 해석으로 이어질 수 있지만, rr 마스크는 반올림 규칙으로 두 자릿수 연도를 변환하는 보다 합리적인 접근법을 제공합니다.

올바른 마스크를 선택하는 것은 데이터를 무심코 제외하지 않도록 도와주며, SQL 쿼리가 의도한 결과를 반환하도록 보장합니다. 역사적 데이터와 관련된 경우, 명확성과 정확성을 위해 rr 마스크를 추천합니다.

항상 두 자릿수 연도를 작업할 때 데이터의 맥락과 현재 연도를 고려하여 해석의 함정과 오류를 피해야 합니다.