본문 바로가기
Database/Oracle

[ORACLE] TO_CHAR() 함수로 숫자와 날짜 형식 자유자재로 변환하기

by Papa Martino V 2025. 6. 5.
728x90

오라클 TO_CHAR() 함수로 숫자와 날짜 형식 자유자재로 변환하기
[Oracle] TO_CHAR

 

Oracle SQL에서 TO_CHAR() 함수는 날짜나 숫자 값을 문자열로 변환할 때 가장 많이 사용하는 함수입니다. 특히 데이터의 출력 형식을 제어하고자 할 때 매우 유용하게 사용됩니다.

1. TO_CHAR 함수 기본 문법

TO_CHAR(value, [format], [nls_parameter])
  • value: 변환할 날짜나 숫자 값
  • format: 출력 형식 지정 문자열
  • nls_parameter: 국가별 설정 옵션 (선택사항)

2. 날짜(Date) 형식 예제

날짜 데이터를 문자열로 변환하여 원하는 형식으로 출력할 수 있습니다.

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;

출력 결과: 2025-06-04

자주 사용하는 날짜 포맷

  • YYYY - 연도 (예: 2025)
  • MM - 월 (01 ~ 12)
  • DD - 일 (01 ~ 31)
  • HH24:MI:SS - 24시간제 시간

복합 예제

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date FROM DUAL;

3. 숫자(Number) 형식 예제

숫자 데이터를 특정 형식의 문자열로 출력할 수 있습니다.

SELECT TO_CHAR(1234567.89, '9,999,999.99') FROM DUAL;

출력 결과: 1,234,567.89

자주 사용하는 숫자 포맷

  • 9 - 숫자 자리 표시
  • 0 - 0을 포함한 자리 표시
  • , - 천 단위 구분자
  • . - 소수점
  • $ - 달러 표시

복합 숫자 포맷 예제

SELECT TO_CHAR(-98765.432, 'L99,999.99') FROM DUAL;

출력 결과: ₩98,765.43 (국가 설정에 따라 다름)

4. NLS 설정 사용 예시

NLS 옵션을 활용하여 국가별 날짜 포맷을 지정할 수 있습니다.

SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=AMERICAN') FROM DUAL;

5. 실무 활용 예제

1) 월별 집계용 키 생성

SELECT TO_CHAR(order_date, 'YYYYMM') AS month_key, COUNT(*)
FROM orders
GROUP BY TO_CHAR(order_date, 'YYYYMM');

2) 급여 출력 시 포맷 적용

SELECT employee_name, TO_CHAR(salary, '$9,999,999.00') AS formatted_salary
FROM employees;

3) 리포트용 출력 포맷

SELECT TO_CHAR(SYSDATE, '"Today is" Day, Month DD, YYYY') AS report_date
FROM DUAL;

6. 자주 발생하는 오류 및 주의사항

  • ORA-01821: 날짜 포맷이 올바르지 않은 경우 발생
  • 숫자 포맷은 자리 수보다 숫자가 클 경우 # 표시됨
  • 소수점 자릿수 초과 시 반올림 처리됨

7. 결론

Oracle의 TO_CHAR 함수는 데이터 표현을 자유롭게 제어할 수 있는 강력한 도구입니다. 날짜와 숫자 데이터를 사용자 친화적으로 표시하고, 다양한 실무 상황에서 유연하게 활용될 수 있습니다. 위 예제들을 통해 실제 업무에 효과적으로 적용해 보시기 바랍니다.

출처

728x90