
QUERY를 사용하다 보면 데이터의 형(TYPE)을 변환해야 할 때가 있어요.
COLUMN TYPE은 DATE인데 결과물은 STRING 으로 조회 해야한다던지, 아니면 그 반대로 해야 한다던지. 이런 경우는 아주 빈번하게 발생하는 일이에요.
MS-SQL DB에서 이럴때 사용하는 함수가 바로 CAST와 CONVERT 함수에요. 둘다 동일하게 데이터의 형을 변경하는데 왜 두가지의 함수가 있냐구요? 그건 바로 두 함수의 기능의 차이 때문이에요.
CAST 함수는 사용하기에는 매우 간단하고 쉽지만 단순히 데이터의 형을 변경하기만 할 뿐 다른 기능이 없어요. 하지만 CONVERT 함수는 데이터의 형을 변경하면서 결과물의 FORMAT도 변경할 수 있다는 큰 장점이 있어요. 하지만 FORMAT 지정에 대한 옵션값들을 따로 메모해 두거나 외워서 사용해야 하는 번거로움도 있죠.
오늘은 이 CONVERT함수의 사용방법을 알아보고 예제를 통하여 실습 결과까지 공유해 보도록 할게요.
📌 CONVERT 함수란?
CONVERT 함수는 MS-SQL에서 데이터 타입을 변환할 때 사용하는 함수입니다. 특히 실무에서는 날짜, 문자열 간의 변환 시 자주 활용됩니다.
1.CONVER 함수 기본 문법
CONVERT 함수는 데이터의 형변환을 위하여 사용되므
CONVERT (data_type [ (length) ], expression [, style])
- data_type: 변환할 대상 데이터 형식
- expression: 변환하고자 하는 원본 값
- style: (선택) 특히 날짜/시간 형식을 문자열로 변환할 때 사용하는 숫자 코드
위의 옵션 중 style의 숫자코드를 이용해서 최종 결과물의 format을 지정할 수 있어요.
🧪 기본 사용 예제
1. 날짜를 문자열로 변환
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD]
📌 style 120은 YYYY-MM-DD HH:MI:SS 포맷 중 앞부분만 자른 결과를 보여줍니다.
2. 문자열을 날짜로 변환
SELECT CONVERT(DATETIME, '2025-06-05 14:30:00', 120) AS ConvertedDate
📌 문자열이 날짜 형식일 경우, 정확한 style을 지정하면 DATETIME 형식으로 변환됩니다.
2.CONVERT 함수 옵션 정리
아래에 DATE -> CHAR 형변환 옵션을 정리했어요. 아~주 많은 옵션이 있지만 실무에서 사용되는 옵션은 몇가지 없어요. 자주 사용되는 옵션은 아래 표에서 붉은색으로 표시 했으니 한번씩 실습해 보세요.
| Style | Query | Result | Date Format |
| 0 | CONVERT(CHAR(18), GETDATE(), 0) | 06 05 2025 5:27PM | mon dd yyyy hh:miPM |
| 1 | CONVERT(CHAR(8), GETDATE(), 1) | 06/05/25 | mm/dd/yy |
| 2 | CONVERT(CHAR(8), GETDATE(), 2) | 15.06.05 | yy.mm.dd |
| 3 | CONVERT(CHAR(8), GETDATE(), 3) | 05/06/25 | dd/mm/yy |
| 4 | CONVERT(CHAR(8), GETDATE(), 4) | 05.06.25 | dd.mm.yy |
| 5 | CONVERT(CHAR(8), GETDATE(), 5) | 05-06-25 | dd-mm-yy |
| 6 | CONVERT(CHAR(8), GETDATE(), 6) | 05 06 25 | dd mon yy |
| 7 | CONVERT(CHAR(9), GETDATE(), 7) | 06 05, 25 | Mon dd, yy |
| 8 | CONVERT(CHAR(8), GETDATE(), 8) | 17:27:41 | hh:mi:ss |
| 9 | CONVERT(CHAR(25), GETDATE(), 9) | 06 05 2025 5:27:41:857PM | mon dd yyyy hh:mi:ss:mmmPM |
| 10 | CONVERT(CHAR(8), GETDATE(), 10) | 06-05-25 | mm-dd-yy |
| 11 | CONVERT(CHAR(8), GETDATE(), 11) | 25/06/05 | yy/mm/dd |
| 12 | CONVERT(CHAR(6), GETDATE(), 12) | 250605 | yymmdd |
| 13 | CONVERT(CHAR(23), GETDATE(), 13) | 05 06 2025 17:27:41:857 | dd mon yyyy hh:mi:ss:mmm(24h) |
| 14 | CONVERT(CHAR(12), GETDATE(), 14) | 17:27:41:857 | hh:mi:ss:mmm(24h) |
| 20 | CONVERT(CHAR(19), GETDATE(), 20) | 2025-06-05 17:27:41 | yyyy-mm-dd hh:mi:ss(24h) |
| 21 | CONVERT(CHAR(23), GETDATE(), 21) | 2026-06-05 17:27:41.857 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| 22 | CONVERT(CHAR(20), GETDATE(), 22) | 07/29/19 5:27:41 PM | mm/dd/yy hh:mi:ss PM |
| 23 | CONVERT(CHAR(10), GETDATE(), 23) | 2019-07-29 | yyyy-mm-dd |
| 24 | CONVERT(CHAR(8), GETDATE(), 24) | 17:27:41 | hh:mi:ss(24h) |
| 25 | CONVERT(CHAR(23), GETDATE(), 25) | 2019-07-29 17:27:41.857 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| 100 | CONVERT(CHAR(18), GETDATE(), 100) | 07 29 2019 5:27PM | mon dd yyyy hh:miPM |
| 101 | CONVERT(CHAR(10), GETDATE(), 101) | 07/29/2019 | mm/dd/yyyy |
| 102 | CONVERT(CHAR(10), GETDATE(), 102) | 2019.07.29 | yyyy.mm.dd |
| 103 | CONVERT(CHAR(10), GETDATE(), 103) | 29/07/2019 | dd/mm/yyyy |
| 104 | CONVERT(CHAR(10), GETDATE(), 104) | 29.07.2019 | dd.mm.yyyy |
| 105 | CONVERT(CHAR(10), GETDATE(), 105) | 29-07-2019 | dd-mm-yyyy |
| 106 | CONVERT(CHAR(10), GETDATE(), 106) | 29 07 2019 | dd mon yyyy |
| 107 | CONVERT(CHAR(11), GETDATE(), 107) | 07 29, 2019 | Mon dd, yyyy |
| 108 | CONVERT(CHAR(8), GETDATE(), 108) | 17:27:41 | hh:mi:ss |
| 109 | CONVERT(CHAR(25), GETDATE(), 109) | 07 29 2019 5:27:41:857PM | mon dd yyyy hh:mi:ss:mmmPM |
| 110 | CONVERT(CHAR(10), GETDATE(), 110) | 07-29-2019 | mm-dd-yyyy |
| 111 | CONVERT(CHAR(10), GETDATE(), 111) | 2019/07/29 | yyyy/mm/dd |
| 112 | CONVERT(CHAR(8), GETDATE(), 112) | 20190729 | yyyymmdd |
| 113 | CONVERT(CHAR(23), GETDATE(), 113) | 29 07 2019 17:27:41:857 | dd mon yyyy hh:mi:ss:mmm(24h) |
| 114 | CONVERT(CHAR(12), GETDATE(), 114) | 17:27:41:857 | hh:mi:ss:mmm(24h) |
| 120 | CONVERT(CHAR(19), GETDATE(), 120) | 2019-07-29 17:27:41 | yyyy-mm-dd hh:mi:ss(24h) |
| 121 | CONVERT(CHAR(23), GETDATE(), 121) | 2019-07-29 17:27:41.857 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| 126 | CONVERT(CHAR(23), GETDATE(), 126) | 2019-07-29T17:27:41.857 | yyyy-mm-ddThh:mi:ss.mmm |
| 127 | CONVERT(CHAR(23), GETDATE(), 127) | 2019-07-29T17:27:41.857 | yyyy-mm-ddThh:mi:ss.mmmZ |
| 131 | CONVERT(CHAR(25), GETDATE(), 131) | 27/11/1440 5:27:41:857PM | dd/mm/yyyy hh:mi:ss:mmmPM |
3.실습: 회원가입 일자 포맷 맞추기
가상의 회원 테이블을 예로 들어볼게요.
테이블 예시
CREATE TABLE Members (
MemberID INT
, Name NVARCHAR(50)
, JoinDate DATETIME
);
실습 쿼리
SELECT Name
, CONVERT(VARCHAR(10), JoinDate, 120) AS FormattedJoinDate
FROM Members;
✅ 결과: 2025-06-05 12:26:32 와 같은 형식으로 출력됩니다.
📝 마무리 정리
- CONVERT()는 데이터 형식을 유연하게 다룰 수 있는 함수로, 특히 날짜 처리에서 빛을 발합니다.
- style 파라미터를 활용하면 다양한 국가 및 시스템 표준에 맞춰 출력 형식을 조정할 수 있습니다.
- 실무에서 날짜 데이터를 정리하거나 레포트용 데이터를 출력할 때 꼭 활용하세요!
💬 읽어주셔서 감사합니다.
공감 + 댓글 은 큰 힘이 됩니다.
여러분의 응원은 컨텐츠 제작에 큰 힘이 됩니다! 😊
'DATABASE' 카테고리의 다른 글
| [MS-SQL] DATEDIFF 함수로 날짜 차이 계산하기 – 실무 예제로 쉽게 배우기 (5) | 2025.07.28 |
|---|---|
| [MS-SQL] CASE 문 완전정복 – 조건 분기로 실무 SQL 마스터하기 (4) | 2025.07.28 |