CS

[SQLD] 변환 함수

2026년 02월 13일 16:46

SQLD 2과목 – 변환함수

  • 데이터 타입을 다른 함수로 변환하는 함수

변환 함수

1. TO_NUMBER

  • 문자 타입 데이터 → 숫자 타입 데이터
TO_NUMBER(대상)

특징

  • 숫자 형태의 문자와 숫자 데이터 간 연산시 묵시적 형 변환 발생해 연산 정상적 수행
SELECT TO_NUMBER('1')   -- 1
    FROM DUAL;

묵시적 형변환

SELECT '1' + 1  -- 2
    FROM DUAL;

2. TO_CHAR

  • 숫자/날짜 타입 데이터 → 문자 타입 데이터
  • 반환 결과는 항상 문자
TO_CHAR(대상 [, FORMAT])

특징

  • 반환 대상이 숫자일 경우, 숫자 변환에 필요한 FORMAT 전달
  • 반환 대상이 날짜일 경우, 날짜 변환에 필요한 FORMAT 전달
  • FORMAT 생략 시 단순히 문자 타입으로만 변환

📌 숫자 FORMAT

FORMAT설명
9숫자를 자릿수만큼 출력
자릿수 부족 시 공백
TO_CHAR(100, '9999'): ' 100'
0숫자를 자릿수만큼 출력
자릿수 부족 시 0
TO_CHAR(100, '0000'): '0100'
9,999천 단위 구분자를 표시함TO_CHAR(1000, '9,999'): '1,000'
$9,999달러($) 기호를 출력함TO_CHAR(1000, '$9999'): '$1000'
99.99소수점 위치를 지정함TO_CHAR(10, '99.99'): '10.00'

📌 날짜 FORMAT

  • MONTH, DAY, DY, MON 등 문자 출력 포맷은 대소문자를 구분하므로 포맷 입력 형태에 따라 출력 결과 상이
  • 포맷을 소문자로 입력하면 소문자로, 대문자로 입력하면 대문자로 출력
FORMAT설명예시
YYYY / RRRR연도 4자리 출력TO_CHAR(SYSDATE, 'YYYY'): '2026'
TO_CHAR(SYSDATE, 'RRRR'): '2026'
YY / RR연도 2자리 출력TO_CHAR(SYSDATE, 'YY'): '26'
TO_CHAR(SYSDATE, 'RR'): '26'
MM월 숫자 2자리 출력TO_CHAR(SYSDATE, 'MM'): '02'
MON월 문자 약어 출력TO_CHAR(SYSDATE, 'MON'): 'FEB' or '2월'
MONTH월 문자 출력TO_CHAR(SYSDATE, 'MON'): 'FEBRUARY' or '2월'
DD일 숫자 2자리 출력TO_CHAR(SYSDATE, 'DD'): '13'
DAY요일 문자 출력TO_CHAR(SYSDATE, 'DAY'): 'FRIDAY' or '금요일'
DY요일 문자 약어 출력TO_CHAR(SYSDATE, 'DY'): 'FRI' or '금요일'
HH / HH12시간 12시간 기준 출력TO_CHAR(SYSDATE, 'HH'): '02'
HH24시간 24시간 기준 출력TO_CHAR(SYSDATE, 'HH24'): '14'
MI분 출력TO_CHAR(SYSDATE, 'MI'): '45'
SS초 출력TO_CHAR(SYSDATE, 'SS'): '24'
Q날짜가 속한 분기 출력TO_CHAR(SYSDATE, 'Q'): '1'

3. TO_DATE

  • 문자 타입 데이터 → 날짜 타입 데이터
  • 날짜처럼 생긴 문자열을 날짜 데이터로 인식시키기 위함
TO_DATE(날짜문자열 [, FORMAT])

특징

  • 날짜처럼 생긴 날짜문자열을 지정한 FORMAT에 맞게 해석하여 날짜 타입으로 변환
  • FORMAT 생략 시 세션의 기본 날짜 형식 기준으로 해석
SELECT TO_DATE('12/10/14', 'DD/MM/YY')  -- 2014/10/12 00:00:00
    FROM DUAL;

두자리 연도 YY / RR 해석

구분설명
YY입력된 두 자리 연도를 현재 세기 기준 해석
49 -> 2049, 50 -> 2050
RR입력된 두 자리 연도를 현재 연도 기준 과거 또는 미래 해석
00-49 -> 20XX, 50-99 -> 19XX

TO_DATE 에서 지정되지 않은 날짜 요소 처리 방식

  • 지정되지 않은 연도와 월은 현재 날짜 기준으로 설정
  • 지정되지 않은 일, 시, 분, 초는 초기값으로 설정

날짜 연산

  • 날짜 타입의 값과 숫자 간 더하기, 빼기 연산 가능
  • 숫자 1은 하루를 의미
  • 숫자 1/24는 한시간을 의미
  • 날짜 - 날짜 연산의 결과는 두 날짜간의 일수 차이 숫자 반환
SELECT TO_DATE('25/12/31 14:30:00', 'YY/MM/DD HH:MI:SS') + 1,       -- 2026/01/01 14:30:00
SELECT TO_DATE('25/12/31 14:30:00', 'YY/MM/DD HH:MI:SS') + 1/24,    -- 2025/12/31 15:30:00
SELECT TO_DATE('25/12/31 14:30:00', 'YY/MM/DD HH:MI:SS') + 1/24/60, -- 2025/12/31 14:31:00
SELECT TO_DATE('25/12/31 14:30:00', 'YY/MM/DD HH:MI:SS') + 10/24/60 -- 2025/12/31 14:40:00
[SQLD] 변환 함수 | Archive