728x90

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 함수는 데이터 표현을 자유롭게 제어할 수 있는 강력한 도구입니다. 날짜와 숫자 데이터를 사용자 친화적으로 표시하고, 다양한 실무 상황에서 유연하게 활용될 수 있습니다. 위 예제들을 통해 실제 업무에 효과적으로 적용해 보시기 바랍니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Database SQL Language Reference
- 실무 경험 기반 정리
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] CAST() 사용법과 실전 예제 : 숫자, 날짜, 문자 변환까지 (0) | 2025.06.06 |
|---|---|
| [ORACLE] TO_DATE() 함수로 날짜 문자열을 손쉽게 변환하는 법 (0) | 2025.06.06 |
| [ORACLE] TO_NUMBER() 함수로 문자형 숫자 데이터 안전하게 변환하는 방법 (0) | 2025.06.05 |
| [ORACLE] TZ_OFFSET() 함수 설명 및 시간대 오프셋 구하는 팁 (0) | 2025.06.05 |
| [ORACLE] SESSIONTIMEZONE() 함수로 글로벌 애플리케이션 시간대 문제 해결 (0) | 2025.06.05 |