본문 바로가기
데이터베이스/MSSQL

CAST 및 CONVERT(Transact-SQL)

by 죠부니 2018. 7. 24.
반응형

자주쓰는데 매번 까먹어서 적는 CAST, CONVERT

https://docs.microsoft.com/ko-kr/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

SELECT 9.5 AS Original, CAST(9.5 AS int) AS int, CAST(9.5 AS decimal(6,4)) AS decimal;


SELECT 9.5 AS Original, CONVERT(int, 9.5) AS int, CONVERT(decimal(6,4), 9.5) AS decimal;

결과값

Original 

int

 decimal

9.5 

9.5000


-- CAST Syntax:  
CAST ( expression AS data_type [ ( length ) ] )  

-- CONVERT Syntax:  
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )  


더더욱 자주쓰는데 까먹는 표

두 자리 연도(yy) (1)네 자리 연도(yyyy)표준입/출력(3)
-0 또는 100 (1,2)datetime 및 smalldatetime의 기본값mon dd yyyy hh:miAM(또는 PM)
1101미국1 = mm/dd/yy
101 = mm/dd/yyyy
2102ANSI2 = yy.mm.dd
102 = yyyy.mm.dd
3103영국/프랑스3 = dd/mm/yy
103 = dd/mm/yyyy
4104독일어4 = dd.mm.yy
104 = dd.mm.yyyy
5105이탈리아어5 = dd-mm-yy
105 = dd-mm-yyyy
6106 (1)-6 = dd mon yy
106 = dd mon yyyy
7107 (1)-7 = Mon dd, yy
107 = Mon dd, yyyy
8108-hh:mi:ss
-9 또는 109 (1,2)기본값 + 밀리초mon dd yyyy hh:mi:ss:mmmAM(또는 PM)
10110USA10 = mm-dd-yy
110 = mm-dd-yyyy
11111일본11 = yy/mm/dd
111 = yyyy/mm/dd
12112ISO12 = yymmdd
112 = yyyymmdd
-13 또는 113 (1,2)유럽 기본값 + 밀리초dd mon yyyy hh:mi:ss:mmm(24h)
14114-hh:mi:ss:mmm(24h)
-20 또는 120 (2)ODBC 표준yyyy-mm-dd hh:mi:ss(24h)
-21 또는 121 (2)time, date, datetime2 및 datetimeoffset의 ODBC 표준(밀리초 포함) 기본값yyyy-mm-dd hh:mi:ss.mmm(24h)
-126 (4)ISO8601yyyy-mm-ddThh:mi:ss.mmm(공백 없이)

참고: 밀리초(mmm) 값 0의 경우 밀리초 소수 부분 값이 표시되지 않습니다. 예를 들어 '2012-11-07T18:26:20.000' 값은 '2012-11-07T18:26:20'으로 표시됩니다.
-127(6, 7)ISO8601(Z 표준 시간대)yyyy-mm-ddThh:mi:ss.mmmZ (공백 없이)

참고: 밀리초(mmm) 값 0의 경우 밀리초 소수 값이 표시되지 않습니다. 예를 들어, '2012-11-07T18:26:20.000' 값은 '2012-11-07T18:26:20'으로 표시됩니다.
-130 (1,2)회교식(5)dd mon yyyy hh:mi:ss:mmmAM

이 스타일에서 mon은 전체 월 이름에 대한 다중 토큰 회교식 유니코드 표현을 나타냅니다.이 값은 SSMS의 기본 미국 영어 설치에서 올바르게 렌더링되지 않습니다.
-131 (2)회교식(5)dd/mm/yyyy hh:mi:ss:mmmAM

------------

http://mirwebma.tistory.com/173

위 블로그가 훨씬 정리 잘해둔거같다.

왜 표에 23이 빠졌는지 모르겠는데

제일 자주쓰는형식


23,112,120

SELECT CONVERT(CHAR(10),GETDATE(),23) , CONVERT(CHAR(8),GETDATE(),112) , CONVERT(CHAR(19),GETDATE(),120)

결과값

2018-07-24

20180724

2018-07-24 15:25:20



반응형