MSSQL CONVERT 함수 사용 방법 (데이터 형변환)
- 카테고리 없음
- 2023. 5. 26.
MS SQL Server에서 CONVERT 함수는 한 데이터 유형을 다른 데이터 유형으로 변환하는 데 사용됩니다. 날짜 형식을 바꿀 때 형식 코드와 함께 유용하게 사용할 수 있고, 데이터의 형식을 바꾸기 위해서도 사용됩니다.
CONVERT 함수
[구문]
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
- data_type : 데이터를 변환하려는 목표 데이터 유형입니다.
- length : 목표 데이터 유형의 길이입니다. 일부 데이터 유형에만 사용합니다.
- expression : 변환하려는 실제 데이터 또는 필드입니다.
- style : 선택적으로 사용합니다. 특히 날짜와 시간 데이터 유형의 변환에서 출력 형식을 결정할 때 사용됩니다.
예시 1) 데이터 유형 변경
문자열 형태인 값을 int 형으로 변환할 수 있습니다. 아래 쿼리는 문자열인 "123"을 정수123으로 변경해서 ConvertedInt라는 컬럼명으로 출력합니다.
SELECT CONVERT(int, '123') AS ConvertedInt
Products라는 테이블에 ProductID라는 컬럼이 int로 저장되어 있다고 가정합니다. 이때 ProductID를 varchar로 변환하여 반환하려면 아래 쿼리와 같이 사용합니다.
SELECT CONVERT(varchar, ProductID) AS ProductIDString
FROM Products
예시 2) 날짜 및 시간 형식 변경
날짜 및 시간은 표현하는 여러 가지 형식이 있기 때문에 활용도가 높습니다.
getdate()로 현재 날짜를 생성하고 dd/mm/yyyy 형식의 문자열로 변환해서 ConvertedDate 컬럼명으로 반환하려면 아래와 같이 쿼리합니다.
SELECT CONVERT(varchar, GETDATE(), 103) AS ConvertedDate
여기서 103은 날짜의 출력 형식을 정의하는 스타일 코드입니다. 103을 넣으면 dd/mm/yyyy 형식으로 표기됩니다. 예를 들어, 112로 넣으면 yyyymmdd 형식으로 출력합니다.
날짜 출력 형식표
CONVERT 함수를 사용하여 날짜와 시간을 문자열로 변환할 때, 스타일 코드를 사용하여 출력 형식을 지정할 수 있습니다.
스타일 코드 | 결과 형식 | 예시 |
1 | mm/dd/yy | 05/23/23 |
3 | dd/mm/yy | 23/05/23 |
4 | dd.mm.yy | 23.05.23 |
5 | dd-mm-yy | 23-05-23 |
10 | mm-dd-yy | 05-23-23 |
11 | yy/mm/dd | 23/05/23 |
101 | mm/dd/yyyy | 05/23/2023 |
103 | dd/mm/yyyy | 23/05/2023 |
104 | dd.mm.yyyy | 23.05.2023 |
105 | dd-mm-yyyy | 23-05-2023 |
110 | mm-dd-yyyy | 05-23-2023 |
111 | yyyy/mm/dd | 2023/05/23 |
112 | yyyymmdd | 20230523 |
120 | yyyy-mm-dd hh:mi:ss(24h) | 2023-05-23 15:45:30 |
121 | yyyy-mm-dd hh:mi:ss.mmm(24h) | 2023-05-23 15:45:30.123 |
126 | yyyy-mm-ddThh:mi:ss.mmmZ | 2023-05-23T15:45:30.123Z |
INSERT / UPDATE / WHERE
CONVERT 함수는 주로 SELECT 구문 내에서 사용되지만, 그 외 구문에서도 활용할 수 있습니다.
1. INSERT : 특정 유형의 데이터를 다른 유형으로 변환하여 삽입
INSERT INTO Orders (OrderDate)
VALUES (CONVERT(datetime, '2023-05-23 15:45:30', 120))
2. UPDATE : 기존 데이터의 유형을 변경할 때 사용
UPDATE Orders
SET OrderDate = CONVERT(datetime, '2023-05-23 15:45:30', 120)
WHERE OrderID = 1
3. WHERE : 필터링 조건을 작성할 때 데이터 유형의 변환을 필요로 하는 경우 사용
SELECT *
FROM Orders
WHERE CONVERT(varchar, OrderDate, 112) = '20230523'