篠崎愛(Shinozaki Ai) : 시노자키 아이

다른 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