IT•개발 끄적/SQL

[SQL] Oracle TO_CHAR, TO_NUMBER, TO_DATE 데이터 타입 변환 (오라클 변환 함수)

소다맛사탕 2021. 6. 2. 21:17
반응형

안녕하세요. 소다맛사탕 입니다.

지난 포스팅 '[SQL] 오라클 문자열 반환 (Oracle LTRIM, RTRIM, LPAD, RPAD)'에 이어서 오늘은 oracle sql TO_CHAR, TO_NUMBER, TO_DATE 즉, 변환 함수에 대해서 알아보겠습니다.

변환 함수 (데이터 타입 변환)
; 서로 다른 유형의 데이터 타입으로 변환해 결과를 반환하는 함수

숫자 또는 날짜 → 문자
숫자형 문자 → 숫자

DATE 형식 문자 → 날짜 

 

1. TO_CHAR

사용법 : TO_CHAR(숫자 또는 날짜, 포맷)

; 숫자나 날짜를 문자로 변환, 날짜 및 숫자 포맷은 표를 통를 참고.

 

날짜 변환 형식

SYSDATE는 현재 시간을 말합니다.

형식(설명) 사용법(포맷)
오전 TO_CHAR(SYSDATE, 'AM')
오후 TO_CHAR(SYSDATE, 'PM')
연도 TO_CHAR(SYSDATE, 'YYYY')
TO_CHAR(SYSDATE, 'MONTH')
01, 02, ..., 12 형태의 로 표시 TO_CHAR(SYSDATE, 'MM')
주중 1 ~ 7일 (일요일1) TO_CHAR(SYSDATE, 'D')
주중 일요일로 표시 (월요일, 화요일...) TO_CHAR(SYSDATE, 'DAY')
01 ~ 31 형태의 로 표시 TO_CHAR(SYSDATE, 'DD')
001 ~ 365 형태의 로 표시 TO_CHAR(SYSDATE, 'DDD')
현재일요일로 표시 TO_CHAR(SYSDATE, 'DL')
01 ~ 12시 형태의 시간으로 표시 TO_CHAR(SYSDATE, 'HH')
01 ~ 23시 형태의 시간으로 표시 TO_CHAR(SYSDATE, 'HH24')
00 ~ 59분 형태의 으로 표시 TO_CHAR(SYSDATE, 'MI')
01 ~ 59초 형태의 로 표시 TO_CHAR(SYSDATE, 'SS')
01 ~ 53주 형태의 로 표시 TO_CHAR(SYSDATE, 'WW')

추가적으로

오전 A.M.

오후 P.M.

연도 YYY, YY, Y

월 MON

시간(1~12) HH12

 

숫자 변환 형식

형식(설명) 사용법(포맷)
콤마로 표시(통화) TO_CHAR(123456, '999,999')
소수점 표시(소수점 통화) TO_CHAR(123456.123, '999,999.9')
음수일 때 <>로 표시 TO_CHAR(-123456, '999999PR')
로마 숫자로 표시 TO_CHAR(123456, 'RN')
양수 +, 음수 - 표시 TO_CHAR(123456, 'S9999999')

현재 제가 쓰는 오라클 버전에서는 로마 숫자 표기가 '#'으로 나옵니다.

양수,음수 표시는 마찬가지로 숫자 앞에 '-' 가 붙으면 결과가 마이너스 형식으로 나옵니다.

 

 

 

2. TO_NUMBER

사용법 : TO_NUMBER(문자, 포맷)

; 문자나 다른 유형의 숫자를 NUMBER 형으로 변환.

 

NUMBER 변환 형식

형식(설명) 사용법(포맷)
소수점 표시 TO_NUMBER('123456.123', '999999D99')
0 제거된 표시 TO_NUMBER('012345600', '000000000')
<> 표시의 음수 TO_NUMBER('<123456>', '999999PR')
소수점 자릿수 표시 TO_NUMBER('123.456E-10')

NUMBER 변환 형식은 포맷이 필수가 아님.

콤마(,)는 숫자 사이에 G로 표시하면 콤마가 사라짐.

 

 

3. TO_DATE, TO_TIMESTAMP

사용법 : TO_DATE(문자, 포맷), TO_TIMESTAMP(문자, 포맷)

; 날짜형 문자를 날짜형으로 변환하는 함수. 각각 DATE 형과, TIMESTAMP 형으로 변환.

 

※ TO_DATE와 TO_TIMESTAMP는 위의 TO_CHAR의 포맷터와 똑같다.

기본적으로 시간형식의 문자형이 들어와야 합니다.

TO_DATE('20210602 11:11:11', 'YYYY-MM-DD HH24:MI:SS')