날짜 함수입문

TO_CHAR

날짜나 숫자를 지정한 형식의 문자열로 바꾸는 함수

정의

TO_CHAR(값, 포맷) 형식. 예: TO_CHAR(hire_date, 'YYYY-MM-DD') → '2025-03-15'. 포맷은 YYYY(연), MM(월), DD(일), HH24(24시간) 등을 조합해서 만든다. 화면에 날짜를 예쁘게 표시할 때 가장 많이 쓴다.

왜 중요한가?

날짜를 보기 좋게 가공할 때 일상적으로 쓰지만, WHERE 조건에 쓰면 안 된다. WHERE TO_CHAR(date_col, 'YYYY') = '2025' 대신 WHERE date_col >= DATE '2025-01-01' AND date_col < DATE '2026-01-01' 처럼 범위 비교로 써야 검색이 빠르다.

틀리기 쉬운 포인트

  • !WHERE 절에 TO_CHAR 사용은 인덱스 무력화. 범위 비교로 변형하세요.
  • !TO_CHAR 결과는 문자열입니다. 정렬/비교 시 주의.
  • !포맷 마스크는 NLS 설정 영향을 받을 수 있습니다.

예시

  -- 표시용
SELECT TO_CHAR(hire_date, 'YYYY-MM-DD')
FROM employees; -- 올바른
WHERE
SELECT *
FROM employees
WHERE hire_date >= DATE '2025-01-01' AND hire_date < DATE '2026-01-01';

성능 포인트

!날짜 인덱스 컬럼을 TO_CHAR로 감싸면 인덱스가 막힌다. 범위 비교로 변형하라.

관련 개념

관련 카테고리