MS-SQL 데이터 타입변환에 대해 알아보겠습니다.
숫자를 문자와 조합한다거나 문자를 숫자로 변경하여 다른 숫자와 합칠 경우 자주 사용되는 함수 입니다.
그리고 날짜형식을 다른 형식의 날짜로 변경할때도 유용하게 사용되는 함수입니다.
1. 구문
CONVERT : CONVERT(data_type[(length)], expression[style])
CAST : CAST( expression AS data_type( length )
2. 인수
expression : 유효한 식
data_type : 대상 데이터 형식 별칭 데이터 형식은 사용할 수 없습니다.
length : 대상 데이터 형식의 길이를 지정하는 선택적 정수입니다. 기본값은 30입니다.
style : Convert함수가 식을 변환하는 방법을 지정하는 정수 식입니다. style이 Null이면 Null값이 반환됩니다.
3. CONVERT 예제
SELECT CONVERT(VARCHAR(10),12345678)+'_테스트' C1_varchar,
CONVERT(INT,'12345678')+22 C2_int,
CONVERT(CHAR(5),'12345678')+'_테스트' C3_char,
CONVERT(VARCHAR(20), getdate(), 120) C4_date ;
C1_varchar C2_int C3_char C4_date
----------------- ----------- ------------ --------------------
12345678_테스트 12345700 12345_테스트 2020-11-20 08:01:52
4. CAST 예제
SELECT 19.9 c1, CAST(19.9 AS INT) c2,
CAST(3 AS VARCHAR(10)) + '_test' c3 ;
c1 c2 c3
--------------------------------------- ----------- ---------------
19.9 19 3_test
5. 참고 (날짜 및 시간 스타일)
날짜 또는 시간 데이터 형식인 경우 다음 표에 있는 값 중 하나이며 그 외의 다른 값은 0으로 처리됩니다.
두 자리 연도(yy) |
네 자리 연도(yyyy) |
Standard |
입/출력(3) |
- |
0 또는 100 |
datetime 및 smalldatetime의 기본값 |
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 |
106 (1) |
- |
6 = dd mon yy |
106 = dd mon yyyy |
|||
7 |
107 (1) |
- |
7 = Mon dd, yy |
107 = Mon dd, yyyy |
|||
8 또는 24 |
108 |
- |
hh:mi:ss |
- |
9 또는 109 |
기본값 + 밀리초 |
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 또는 113 |
유럽 기본값 + 밀리초 |
dd mon yyyy hh:mi:ss:mmm(24h) |
14 |
114 |
- |
hh:mi:ss:mmm (24h) |
- |
20 또는 120 |
ODBC 표준 |
yyyy-mm-dd hh:mi:ss (24h) |
- |
21 또는 25 또는 121 |
time, date, datetime2 및 datetimeoffset의 ODBC 표준(밀리초 포함) 기본값 |
yyyy-mm-dd hh:mi:ss.mmm (24h) |
22 |
- |
미국 |
mm/dd/yy hh:mi:ss AM (또는 PM) |
- |
23 |
ISO8601 |
yyyy-mm-dd |
- |
126 |
ISO8601 |
yyyy-mm-ddThh:mi:ss.mmm(공백 없이) |
참고: 밀리초(mmm) 값 0의 경우 밀리초 소수 부분 값이 표시되지 않습니다. 예를 들어 '2012-11-07T18:26:20.000' 값은 '2012-11-07T18:26:20'으로 표시됩니다. |
|||
- |
127 |
ISO8601(Z 표준 시간대) |
yyyy-MM-ddThh:mm:ss.fffZ(공백 없음) |
참고: 밀리초(mmm) 값 0의 경우 밀리초 소수 값이 표시되지 않습니다. 예를 들어, '2012-11-07T18:26:20.000' 값은 '2012-11-07T18:26:20'으로 표시됩니다. |
|||
- |
130 |
회교식 |
dd mon yyyy hh:mi:ss:mmmAM |
이 스타일에서 mon 은 전체 월 이름에 대한 다중 토큰 회교식 유니코드 표현을 나타냅니다. 이 값은 SSMS의 기본 미국 영어 설치에서 올바르게 렌더링되지 않습니다. |
|||
- |
131 |
회교식 |
dd/mm/yyyy hh:mi:ss:mmmAM |
이상 MS-SQL 데이터 타입변환에 대해 설명하였습니다.
'Database > MS-SQL' 카테고리의 다른 글
SSMS에서 쿼리 실행 후 한글로 바뀌는 현상 해결 (0) | 2020.12.14 |
---|---|
MS-SQL 숫자 함수 (CELLING, FLOOR, ROUND) (0) | 2020.12.14 |
MS-SQL 데이터 타입 형식변환 함수(CAST / CONVERT) (0) | 2020.12.14 |
MS-SQL 데이터 타입 대소문자 변환 함수(UPPER / LOWER) (0) | 2020.12.14 |
MS-SQL 문자수 반환 함수(LEN / DATALENGTH) (0) | 2020.12.14 |
댓글