오라클 날짜 타입 정리

SeongGyun Hong·2025년 3월 1일

SQL

목록 보기
46/51

https://school.programmers.co.kr/learn/courses/30/lessons/132203?language=mysql

프로그래머스 문제를 풀다가 이번 기회에 Oracle 날짜 관련 타입과 EXTRACT 함수 사용 시 주의사항을 간략하게 정리하려고 한다.


1. Oracle에서 날짜 관련 타입

  • DATE

    • 저장 내용: 연, 월, 일, 시, 분, 초 (7바이트에 저장)
    • 특징: 시, 분, 초 정보는 저장되지만, EXTRACT 함수로 직접 추출할 수 없음
  • TIMESTAMP

    • 저장 내용: DATE 정보에 소수점 이하 초(밀리초, 마이크로초)까지 추가 저장
    • 특징: EXTRACT 함수로 연, 월, 일, 시, 분, 초 모두 추출 가능

2. EXTRACT 함수 사용 시 주의사항

  • 연, 월, 일 추출:

    • DATETIMESTAMP 모두 EXTRACT(YEAR/MONTH/DAY FROM ...) 사용 시 정상 동작
  • 시, 분, 초 추출:

    • DATE에서는 EXTRACT(HOUR/MINUTE/SECOND FROM DATE) 사용 시 오류 발생
    • TIMESTAMP에서는 EXTRACT(HOUR/MINUTE/SECOND FROM TIMESTAMP)가 정상 작동
    • 대안: DATE에서 시, 분, 초를 추출하려면 TO_CHAR(DATE, 'HH24'), TO_CHAR(DATE, 'MI'), TO_CHAR(DATE, 'SS')를 사용하거나,
      CAST(DATE AS TIMESTAMP) 후 EXTRACT 사용

3. 정리 표

데이터 타입저장 내용EXTRACT 사용 가능 (연/월/일)EXTRACT 사용 가능 (시/분/초)
DATE연, 월, 일, 시, 분, 초가능불가능 (ORA-30076 오류)
TIMESTAMPDATE 정보 + 소수점 이하 초가능가능

4. 결론

  • DATE 타입은 시, 분, 초를 내부에 저장하지만, EXTRACT 함수로는 연, 월, 일만 직접 추출 가능하므로 시, 분, 초는 TO_CHAR를 사용하거나 TIMESTAMP로 변환 후 EXTRACT해야 함.
  • TIMESTAMP 계열은 EXTRACT 함수로 모든 구성요소(연, 월, 일, 시, 분, 초)를 추출할 수 있어 편리!
profile
헤매는 만큼 자기 땅이다.

0개의 댓글