[TeraData] CAST 함수 (데이터 타입 변환)
다른 DB환경에서도 사용 가능한 것 같지만 일단 Teradata 교제에서 나오는 내용이니 Teradata로 분류
Char -> DATE
CAST('20100101' AS DATE FORMAT 'YYYYMMDD')
=> 20100101 // DATE형 - 출력 포맷은 툴에 따라 다를 수 있음.
Char -> Numeric
CAST('1234' AS DECIMAL(4, 2) FORMAT '9(2)V9(2)');
=> 12.34 // Numeric Overflow 주의. 가능한 명확한 포맷을 지정
Char -> TIME
CAST('01:00:00' AS TIME(0))
=> 01:00:00 // TIME(n)에서 n은 초에 대한 정밀도이다. 따라서 주어진 Char의 초의 정밀도가 n 이하여야 한다.
Char -> TIMESTAMP
CAST('2010-01-01 01:01:01.12345' AS TIMESTAMP(5));
=> 2010-01-01 01:01:01.12345 // TIMESTAMP(n)에서 n은 TIME과 마찬가지다.
DATE -> Char
CAST(CURRENT_DATE AS CHAR(10))
=> 2013-04-10
CAST(CAST(CURRENT_DATE AS FORMAT 'YYYY/MM/DD') AS CHAR(10)); // 결과 포맷을 다르게 하기 위해서 AS FORMAT을 추가
=> 2012/03/29
DATE -> TIMESTAMP
CAST(DATE '2010-01-01' AS TIMESTAMP(1));
=> 2010-01-01 00:00:00.0
Numeric -> Char
CAST(12345 AS CHAR(5))
=> 12345 // 명시적으로 CAST를 사용하지 않을 경우 일부 데이터에 대해서 truncation이 발생할 수 있으므로 주의
Numeric -> Numeric
CAST((A * B) / C AS DECIMAL(15, 2)); // A, B, C가 DEC(8, 2)일 때 결과값을 DEC(15, 2)로 변환하는 경우
TIMESTAMP -> Char
CAST(CURRENT_TIMESTAMP AS CHAR(26));
=> 2013-04-10-18.25.31.210000
CAST(CAST(CURRENT_TIMESTAMP AS FORMAT 'YYYY/MM/DDBHH:MI:SS.S(6)') AS CHAR(26));
=> 2013-04-10 18:25:31.210000 // 결과 포맷을 다르게 하기 위해서 AS FORMAT을 추가
TIMESTAMP -> DATE
CAST(CURRENT_TIMESTAMP AS DATE);
=> 2013-04-10
CAST(TIMESTAMP '2010-01-01 01:02:03' AS DATE);
=> 2010-01-01
[출처] [Teradata] CAST 함수 (데이터 타입 변환)|작성자 Ehne