CONVERT 함수
CAST 함수와 마찬가지로 CONVERT 함수는 한 데이터 유형을 호환되는 다른 데이터 유형으로 변환합니다. 예를 들어 문자열을 날짜로 변환하거나 숫자 형식을 문자열로 변환할 수 있습니다. CONVERT는 런타임 변환을 수행합니다. 즉, 변환을 수행해도 원본 테이블의 값 데이터 유형은 변경되지 않습니다. 쿼리의 컨텍스트에서만 변경됩니다.
CONVERT 함수를 사용하여 다른 데이터 유형으로 명시적인 변환이 필요한 데이터 유형이 몇 가지 있습니다. 그 밖에 CAST 또는 CONVERT를 사용하지 않고 다른 명령의 일부로서 묵시적으로 변환할 수 있는 데이터 형식들도 있습니다. 형식 호환성 및 변환 섹션을 참조하세요.
구문
CONVERT ( type, expression )
인수
- type
-
지원되는 데이터 타입 중 한 가지입니다.
- expression
-
열 이름이나 리터럴 같이 하나 이상의 값으로 평가되는 표현식입니다. null 값을 변환하면 마찬가지로 null이 반환됩니다. 또한 표현식에는 공백이나 빈 문자열이 포함되어서도 안 됩니다.
반환 타입
CONVERT는 type 인수에서 지정하는 데이터 형식을 반환합니다.
참고
다음과 같이 문제가 발생할 수 있는 변환을 실행하면 Amazon Redshift가 오류를 반환합니다. 첫째, 정밀도를 떨어뜨리는 DECIMAL 변환입니다.
SELECT CONVERT(decimal(2,1), 123.456);
둘째, 오버플로우를 야기하는 INTEGER 변환입니다.
SELECT CONVERT(smallint, 12345678);
예시
이 안내서에 나오는 예는 대부분 샘플 TICKIT 데이터베이스를 사용합니다. 샘플 데이터 설정에 관한 자세한 내용은 데이터 로드 단원을 참조하세요.
다음 쿼리는 CONVERT 함수를 사용하여 십진수 열을 정수로 변환합니다.
SELECT CONVERT(integer, pricepaid) FROM sales WHERE salesid=100;
이 예제에서는 정수를 문자열로 변환합니다.
SELECT CONVERT(char(4), 2008);
이 예에서는 현재 날짜 및 시간이 가변 문자 데이터 유형으로 변환됩니다.
SELECT CONVERT(VARCHAR(30), GETDATE());
getdate --------- 2023-02-02 04:31:16
이 예제에서는 saletime 열을 시간만 있는 값으로 변환하고 각 행에서 날짜를 제거합니다.
SELECT CONVERT(time, saletime), salesid FROM sales order by salesid limit 10;
한 시간대에서 다른 시간대로 타임스탬프를 변환하는 방법에 대한 자세한 내용은 CONVERT_TIMEZONE 함수 단원을 참조하세요. 추가 날짜 및 시간 함수는 날짜 및 시간 함수 단원을 참조하세요.
다음 예제에서는 가변 문자 데이터를 datetime 객체로 변환합니다.
SELECT CONVERT(datetime, '2008-02-18 02:36:48') as mysaletime;
참고
GEOMETRY
데이터 형식에 대해 CAST 또는 CONVERT 작업을 수행하여 다른 데이터 형식으로 변경할 수 없습니다. 그러나 GEOMETRY
인수를 허용하는 함수에 대한 입력으로 EWKB(Extended Well-Known Binary) 형식으로 문자열 리터럴의 16진수 표현을 제공할 수 있습니다. 예를 들어, ST_AsText
함수는 GEOMETRY
데이터 형식을 사용합니다.
SELECT ST_AsText('01010000000000000000001C400000000000002040');
st_astext ------------ POINT(7 8)
GEOMETRY
데이터 형식을 명시적으로 지정할 수도 있습니다.
SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
st_astext ------------ POINT(5 6)