데이터베이스/Oracle

[Oracle] 데이터 타입 변환(TO_CHAR,TO_NUMBER,TO_DATE)

페어팩 2020. 8. 20. 15:12

개발을 하다 보면 오라클에서 데이터 타입을 맞춰줘야 할 때가 있다. MYSQL에서야 CONVERT로 변환이 가능하지만 오라클에서는 통하지 않는다. 오라클에서 데이터 타입 변경을 하고 싶을때는 CONVERT가 아닌 다른 함수를 사용하여야 하는데 TO_[데이터타입] 형식이 주로 사용된다. 대표적으로 TO_CHAR , TO_NUMBER, TO_DATE 등이 있다.

 

TO_CHAR (CHAR 형변환)

--사용법-- 
SELECT TO_CHAR([컬럼명]) FROM [테이블명] 

--예제-- 
SELECT TO_CHAR(10000) FROM DUAL --INT TO CHAR 
SELECT TO_CHAR(SYSDATE) FROM DUAL --DATE TO CHAR 
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL --DATE TO CHAR(포맷팅)

--실전사용에서는 예제3과 같이 DATE형을 CHAR형으로 바꿀때 주로 사용된다
SELECT TO_CHAR(SYSDATE,'YYYYMMDD24MISS') FROM DUAL

TO_NUMBER (NUMBER 형변환)

--사용법 
SELECT TO_NUMBER([컬럼명]) FROM [테이블명] 

--예제-- SELECT TO_NUMBER('10000') FROM DUAL -- CHAR TO NUMBER 
SELECT TO_NUMBER('10000') + TO_NUMBER('20000') FROM DUAL --VACHAR TO NUMBER(계산)

--TO_NUMBER형은 SQL 안에서 연산이 필요할 때 주로 사용한다.

TO_DATE (DATE형으로 변경)

--사용법 (반드시 포맷을 지정해주어야합니다.)-- 
SELECT TO_DATE([컬럼명],[포맷형식])FROM [테이블명] 
-- 예제 
-- CHAR TO_DATE(YYYY-MM-DD 포맷) 
SELECT TO_DATE('2019-01-25','YYYY-MM-DD') FROM DUAL 

--2018-01-01 ~ 현재까지 지난 날짜계산 
SELECT TRUNC(SYSDATE - TO_DATE('2018-01-01','YYYY-MM-DD'))FROM DUAL 

--2019-01-24에서 100일 후 날짜 계산 
SELECT TRUNC(TO_DATE('2019-01-24','YYYY/MM/DD'))+100 FROM DUAL