개발/SQL

데이터 타입과 변환: TO_DATE(), TO_CHAR(), CAST(), CONVERT() 활용

예니03 2025. 3. 21. 10:02
반응형

SQL에서 데이터를 다룰 때 가장 중요한 개념 중 하나가 데이터 타입(Data Type)입니다.
데이터 타입이 다르면 연산이 불가능하거나 오류가 발생할 수 있기 때문에,
서로 다른 데이터 타입을 변환하는 방법을 알아두는 것이 중요합니다.

이번 글에서는 날짜, 문자, 숫자 등의 변환 함수를 예제와 함께 쉽게 설명하겠습니다! 😊


🔹 1. 데이터 타입(Data Type)이란?

📌 데이터 타입은 데이터가 어떤 형식으로 저장되는지를 정의합니다.

자주 사용하는 데이터 타입

데이터 타입 설명
VARCHAR2(n) 가변 길이 문자열 (최대 n 바이트)
CHAR(n) 고정 길이 문자열 (최대 n 바이트)
NUMBER(p,s) 숫자 (p: 전체 자릿수, s: 소수점 이하 자릿수)
DATE 날짜와 시간 (YYYY-MM-DD HH:MI:SS)
TIMESTAMP 날짜와 시간 + 밀리초
CLOB 긴 문자 데이터 (텍스트 저장)

✔ 서로 다른 데이터 타입을 변환할 때 TO_DATE(), TO_CHAR(), CAST(), CONVERT() 같은 함수를 사용합니다.


🔹 2. 문자열을 날짜로 변환: TO_DATE()

📌 TO_DATE() 함수는 문자열을 날짜 형식(YYYY-MM-DD)으로 변환할 때 사용합니다.

문법

TO_DATE(문자열, '포맷')

예제: 문자열을 날짜로 변환

SELECT TO_DATE('2024-03-15', 'YYYY-MM-DD') AS result FROM dual;

✔ '2024-03-15' 문자열이 DATE 타입으로 변환됨

다양한 날짜 형식 변환

SELECT 
    TO_DATE('15-03-2024', 'DD-MM-YYYY') AS date1,
    TO_DATE('20240315', 'YYYYMMDD') AS date2,
    TO_DATE('03/15/2024', 'MM/DD/YYYY') AS date3
FROM dual;

입력 문자열의 형식에 맞게 변환해야 오류 없이 실행됨


🔹 3. 날짜를 문자열로 변환: TO_CHAR()

📌 TO_CHAR() 함수는 날짜 또는 숫자를 문자열로 변환할 때 사용합니다.

문법

TO_CHAR(날짜 또는 숫자, '포맷')

예제: 날짜를 문자열로 변환

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

✔ SYSDATE(현재 날짜)를 'YYYY-MM-DD HH24:MI:SS' 형식의 문자열로 변환

날짜를 다양한 형식으로 변환

SELECT 
    TO_CHAR(SYSDATE, 'YYYY/MM/DD') AS format1,
    TO_CHAR(SYSDATE, 'MM-DD-YYYY') AS format2,
    TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') AS format3
FROM dual;

✔ 원하는 형식으로 출력 형태를 조정할 수 있음

숫자를 문자열로 변환

SELECT TO_CHAR(1234567, '9,999,999') AS formatted_number FROM dual;

✔ 숫자 1,234,567을 천 단위 구분 기호(,) 포함하여 문자열로 변환


🔹 4. 데이터 타입 변환: CAST()

📌 CAST() 함수는 데이터 타입을 변환할 때 사용됩니다.
✔ 날짜 → 문자열, 숫자 → 문자열 등 다양한 변환이 가능

문법

CAST(값 AS 데이터타입)

예제: 숫자를 문자로 변환

SELECT CAST(100 AS VARCHAR2(10)) AS text_value FROM dual;

✔ 숫자 100이 문자열 '100'으로 변환됨

문자열을 숫자로 변환

SELECT CAST('1234' AS NUMBER) + 10 AS result FROM dual;

✔ '1234'를 NUMBER로 변환 후 +10 연산 수행 (결과: 1244)

날짜를 문자열로 변환 (TO_CHAR()와 동일)

SELECT CAST(SYSDATE AS VARCHAR2(20)) AS date_text FROM dual;

✔ 현재 날짜를 문자열로 변환 (TO_CHAR(SYSDATE, 'YYYY-MM-DD')과 유사)


🔹 5. 데이터 타입 변환: CONVERT()

📌 CONVERT() 함수는 문자의 인코딩(캐릭터셋) 변환을 수행합니다.
✔ 예를 들어, UTF8 → AL32UTF8 변환

문법

CONVERT(문자열, 새로운 문자셋)

예제: 문자셋 변환

SELECT CONVERT('안녕하세요', 'AL32UTF8') AS converted_text FROM dual;

✔ CONVERT()는 주로 다국어 환경에서 문자 인코딩 변환 시 사용


🔹 6. 데이터 타입 변환 정리

함수 설명 예제
TO_DATE() 문자열 → 날짜 변환 TO_DATE('2024-03-15', 'YYYY-MM-DD')
TO_CHAR() 날짜/숫자 → 문자열 변환 TO_CHAR(SYSDATE, 'YYYY-MM-DD')
CAST() 데이터 타입 변환 CAST(100 AS VARCHAR2(10))
CONVERT() 문자 인코딩 변환 CONVERT('안녕하세요', 'AL32UTF8')

✔ TO_DATE()와 TO_CHAR()는 날짜 변환
✔ CAST()는 다양한 데이터 타입 변환
✔ CONVERT()는 문자셋 변환


🔹 7. 실전 연습 문제

다음 SQL을 직접 작성해보세요!

1️⃣ '20240315'를 DATE 타입으로 변환하는 SQL 작성
2️⃣ 현재 날짜를 'YYYY년 MM월 DD일' 형식의 문자열로 변환하는 SQL 작성
3️⃣ 숫자 '98765'를 천 단위 구분 기호(,)가 포함된 문자열로 변환하는 SQL 작성
4️⃣ 문자열 '500'을 숫자로 변환 후 100을 더하는 SQL 작성

정답을 댓글로 남겨주세요! 😊✨

👉 SQL 데이터 변환을 직접 사용해보면서 익혀보세요! 🚀

반응형