MSSQL CONVERT 함수 사용 방법 (데이터 형변환)

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

 

convert 예시1

 

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 103
스타일 코드 103

 

convert 112
스타일 코드 112

 

날짜 출력 형식표

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'
반응형

댓글

Designed by JB FACTORY