-
MSSQL CONVERT 사용법 및 날짜 포맷IT/SQL 2024. 4. 6. 18:54
CONVERT 사용법
CONVERT 의 경우 날짜포맷을 변경하는 용도로 주로 사용하는데, 구문 및 옵션은 아래와 같고, 그 외의 경우(형변환)에는 몇글자라도 짧은 CAST 를 주로 사용한다.
SELECT CONVERT(NCHAR(8), GETDATE(), 112)
convert 결과 이렇게 마지막 옵션에 112 를 넣으면 char(8) 로 'YYYYMMDD' 형식으로 변환되는데, 마지막 옵션 112 자리에 다른 값들을 넣으면 다른 형식으로 변환이 가능하다, 보통 112,120을 많이 사용한다.
두 자리 연도(yy)1 네 자리 연도(yyyy) Standard 입출력3 - 0 또는 1001,2 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 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:mmmAM
7- 1312 Hijri 5 dd/mm/yyyy hh:mi:ss:mmmAM
그런데 날짜 형식 변환을 CONVERT 로 하는 것 보다는 FORMAT 함수 를 이용하는 편이 좀 더 직관적이라서 권장하는 방식이다. 참고 : MSSQL Format 함수
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd'), FORMAT(GETDATE(), 'yyyyMMdd')
결과
Format 을 이용해서 날짜 형식을 표시한 결과 이런 날짜변환말고 DataType 변환이 필요한 경우는 CAST 함수를 많이 사용한다.
SELECT CAST( 3.3 AS NUMERIC(8,4))
주의점
CONVERT 이든 CAST 이든 뭔가 값을 변환할 때 원본이 되는 값이 날짜/숫자 형식으로 변환이 가능한 지 먼저 확인해봐야 런타임에서 나는 에러를 방지할 수 있어서 ISNUMERIC, ISDATE 등의 함수로 먼저 체크를 한 후에 변환하는게 좋다.
데이터는 숫자/날짜로 변환이 가능한 데이터가 들어오도록 설계되었지만 입력단에 구멍이 있어서 예상하지 못한 데이터가 들어오는 경우도 있어서...
DECLARE @A VARCHAR(1) SET @A = 'A' SELECT CAST( @A AS INT)
DECLARE @A VARCHAR(1) SET @A = 'A' SELECT CASE WHEN ISNUMERIC(@A) > 0 THEN CAST( @A AS INT) ELSE NULL END
'IT > SQL' 카테고리의 다른 글
MSSQL 임시테이블 존재여부 체크 해서 생성하기 (0) 2024.04.12 MSSQL Update 문 사용법. Join 포함 (0) 2024.04.10 MSSQL 버전 확인 등 구성함수(@@함수) (0) 2024.04.08 MSSQL 프로시저 검색, 프로시저 내용 검색 (0) 2024.04.07 MSSQL Format 함수 사용법, 예제 및 yyyyMMdd 등 인수 설명 (0) 2024.04.02