이 글에서는 SQL Server에서 데이터 타입 변환에 사용되는 CONVERT 함수의 사용법을 구체적인 문법과 예제와 함께 자세히 소개하여, 함수를 더욱 쉽게 이해하고 실무에 바로 활용할 수 있도록 안내해 드립니다.
CONVERT 함수란?
SQL Server의 CONVERT 함수는 표현식(expression)을 원하는 데이터 타입으로 자유롭게 변환할 수 있게 해주는 함수입니다. 특히 날짜(date) 데이터 타입의 경우 지정된 형식에 따라 변환이 가능하다는 것이 큰 장점입니다. 만약 변환에 실패하면 CONVERT는 오류를 반환하고, 성공하면 해당 변환 값을 반환합니다.
CONVERT 함수 기본 문법
SQL Server에서 CONVERT 함수를 사용하는 기본 문법은 다음과 같습니다.
CONVERT (데이터타입 (길이), 표현식, 형식)
매개변수 설명
- 데이터타입: 표현식이 변환될 새로운 데이터 타입의 이름입니다. bigint, int, smallint, tinyint, bit, decimal, numeric, money, smallmoney, float, real, datetime, smalldatetime, char, varchar, text, nchar, nvarchar, ntext, binary, varbinary, image 중 하나를 사용할 수 있습니다.
- 길이 (선택 사항): char, varchar, nchar, nvarchar, binary, varbinary 타입의 결과 값 길이를 지정합니다.
- 표현식: 다른 데이터 타입으로 변환할 대상 값입니다. 테이블의 컬럼 이름이나 새로운 데이터 타입으로 변환해야 하는 계산식도 사용할 수 있습니다.
- 형식 (선택 사항): 날짜 형식의 데이터를 문자열로 변환할 때 적용할 스타일을 지정하는 숫자 값입니다. 아래 표에서 CONVERT에서 자주 사용되는 형식 코드를 확인할 수 있습니다.
날짜 및 시간 형식 코드표
| 형식 (yy) | 형식 (yyyy) | 출력 형태 |
|---|---|---|
| 0 | 100 | mon dd yyyy hh:miAM/PM (기본값) |
| 1 | 101 | mm/dd/yyyy (미국 표준) |
| 2 | 102 | yy.mm.dd (ANSI 표준) |
| 3 | 103 | dd/mm/yy (영국/프랑스 표준) |
| 4 | 104 | dd.mm.yy (독일 표준) |
| 5 | 105 | dd-mm-yy (이탈리아 표준) |
| 6 | 106 | dd mon yy |
| 7 | 107 | Mon dd, yy |
| 8 | 108 | hh:mi:ss |
| 9 | 109 | mon dd yyyy hh:mi:ss:mmmAM/PM |
| 10 | 110 | mm-dd-yy (미국 표준) |
| 11 | 111 | yy/mm/dd (일본 표준) |
| 12 | 112 | yymmdd (ISO 표준) |
| 13 | 113 | dd mon yyyy hh:mi:ss:mmm (유럽 표준 - 24시간제) |
| 14 | 114 | hh:mi:ss:mmm (24시간제) |
| 20 | 120 | yyyy-mm-dd hh:mi:ss (ODBC canonical - 24시간제) |
| 21 | 121 | yyyy-mm-dd hh:mi:ss:mmm (ODBC canonical - 24시간제) |
| - | 126 | yyyy-mm-ddThh:mi:ss:mmm (ISO8601 표준) |
| - | 127 | yyyy-mm-ddThh:mi:ss:mmmZ (ISO8601 표준) |
| - | 130 | dd mon yyyy hh:mi:ss:mmmAM/PM (Hijri 표준) |
| - | 131 | dd/mm/yy hh:mi:ss:mmmAM/PM (Hijri 표준) |
CONVERT 함수 사용 시 주의사항
- float 또는 numeric 데이터 타입을 정수(int)로 변환할 때, CONVERT는 소수점 이하 자릿수를 반올림하지 않고 잘라냅니다.
- CAST, TRY_CAST, TRY_CONVERT 함수도 함께 참고하면 상황에 맞는 변환 방법을 선택하는 데 도움이 됩니다.
- CONVERT 함수는 SQL Server 2005부터 SQL Server 2008, 2008 R2, 2012, 2014, 2016, 그리고 2017까지 모든 버전에서 사용할 수 있습니다.
CONVERT 함수 예제
다양한 예제를 통해 SQL Server에서 CONVERT 함수가 실제로 어떻게 동작하는지 살펴보겠습니다.
SELECT CONVERT(int, 14.85);
-- 결과: 14 (소수점 이하 절사)
SELECT CONVERT(float, 14.85);
-- 결과: 14.85
SELECT CONVERT(varchar, 15.6);
-- 결과: '15.6'
SELECT CONVERT(varchar(4), 15.6);
-- 결과: '15.6'
SELECT CONVERT(float, '15.6');
-- 결과: 15.6
SELECT CONVERT(datetime, '2019-05-02');
-- 결과: '2019-05-02 00:00:00.000'
SELECT CONVERT(varchar, '05/02/2019', 101);
-- 결과: '05/02/2019'
위 예제에서 볼 수 있듯이, CONVERT 함수는 숫자 간 변환은 물론 문자열과 날짜 타입 간의 변환까지 폭넓게 지원합니다. 세 번째 인자인 형식 코드를 활용하면 날짜 데이터를 국가별 표준 형식의 문자열로 손쉽게 변환할 수 있으므로, 보고서 작성이나 데이터 출력 시 유용하게 활용할 수 있습니다.