MSSQL Convert 함수 사용법

개요

MSSQL Convert 함수는 DataType 을 변환하는 함수인데, 112 등의 인수를 이용해서 날짜 등을 특정한 형태로 변환하는데도 많이 사용됩니다. 날짜형식변환이 아닌 순수한 DataType 변환은 CAST 가 몇 글자 짧아서 CAST 를 보통 많이 사용합니다.

Convert 구문

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Convert 함수의 MS 설명서

날짜 변환 예제 ( datetime to string )

SELECT CONVERT(CHAR(8), GETDATE(), 112) AS [112]
	, CONVERT(CHAR(10), GETDATE(), 120) AS [120]
	, CONVERT(CHAR(10), '20231231', 112) AS [StringToString]

예제 실행 결과

CONVERT 예제 실행 결과

날짜변환 예제 ( datetime 이 아닌 경우 )

SELECT CONVERT(CHAR(10), '2023-12-31', 112) AS [String To String]
	, CONVERT(CHAR(10), CAST('2023-12-31' AS DATETIME), 112) AS [String To String]
	, CONVERT(datetime, '20231231') as [String To Datetime]
String To Datetime 예제 결과

이 경우 첫번째 CASE 는 형식 변환이 안됩니다. 두 번째 인수가 DATETIME 이 아니라서, 원본 문자열이 그대로 다시 표시됩니다. 그래서 두 번째 CASE 처럼 CAST 를 이용해서 날짜형식으로 바꿔줘야 세번째 인수가 적용된 결과가 표시됩니다. 세번째 예제는 string 을 Datetime 으로 변환하는 예제입니다. 이 경우는 세 번째 인수가 필요없습니다.

기타

형변환을 할 때에는 먼저 isnumeric 또는 isdate 함수를 통해서 변환이 가능한 값인지를 확인하는 것이 좋습니다. 당초에 변환이 불가능한 값이면 convert 에서 에러가 나기때문에, case 문 등을 활용해서 확인후에 변환하도록 합니다.

아니면 TRY_CAST, TRY_CONVERT 를 사용하는 것도 좋습니다.이 함수들은 CAST 나 CONVERT 실패시 NULL 을 반환하기때문에 에러는 나지 않습니다.

참고 – Convert 함수 세 번째 인수 목록

두 자리 연도(yy)1 네 자리 연도(yyyy) Standard 입출력3
0 또는 1001,2 datetimesmalldatetime의 기본값 mon dd yyyy hh:miAM(또는 PM)
1 101 미국 1 = mm/dd/yy
101 = mm/dd/yyyy
2 102 ANSI 2 = yy.mm.dd
102 = yyyy.mm.dd
3 103 영국/프랑스 3 = dd/mm/yy
103 = dd/mm/yyyy
4 104 독일어 4 = dd.mm.yy
104 = dd.mm.yyyy
5 105 이탈리아어 5 = dd-mm-yy
105 = dd-mm-yyyy
6 1061 6 = dd mon yy
106 = dd mon yyyy
7 1071 7 = Mon dd, yy
107 = Mon dd, yyyy
8 또는 24 108 hh:mi:ss
9 또는 1091,2 기본값 + 밀리초 mon dd yyyy hh:mi:ss:mmmAM(또는 PM)
10 110 USA 10 = mm-dd-yy
110 = mm-dd-yyyy
11 111 일본 11 = yy/mm/dd
111 = yyyy/mm/dd
12 112 ISO 12 = yymmdd
112 = yyyymmdd
13 또는 1131,2 유럽 기본값 + 밀리초 dd mon yyyy hh:mi:ss:mmm(24시간)
14 114 hh:mi:ss:mmm(24시간)
20 또는 1202 ODBC 표준 yyyy-mm-dd hh:mi:ss(24시간)
21 또는 25 또는 1212 time, date, datetime2, datetimeoffset의 ODBC 표준(밀리초 포함) 기본값 yyyy-mm-dd hh:mi:ss.mmm(24시간)
22 미국 mm/dd/yy hh:mi:ss AM(또는 PM)
23 ISO8601 yyyy-mm-dd
1264 ISO8601 yyyy-mm-ddThh:mi:ss.mmm(공백 없음)6
1278, 9 ISO8601(Z 표준 시간대) yyyy-MM-ddThh:mm:ss.fffZ(공백 없음)6
1301,2 Hijri 5 dd mon yyyy hh:mi:ss:mmmAM7
1312 Hijri 5 dd/mm/yyyy hh:mi:ss:mmmAM

MSSQL 문자열함수 26개 정리 바로가기

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다