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')