Oracle에서 사용할 수 있는 형 변환 함수들은 다음과 같습니다.
1. 형 변환 함수
| 함수명 | 양식 | 기능 설명 | 
| TO_CHAR | TO_CHAR(num or date, format) | 숫자(num) or 날짜(date)를 형식에 맞는 문자열로 변환 | 
| TO_NUMBER | TO_NUMBER(str, format) | 형식(format)의 문자열(str)을 숫자로 변환 | 
| TO_DATE TO_TIMESTAMP | TO_DATE(str, format) TO_TIMESTAMP(str, format) | 형식(format)의 문자열(str)을 날짜로 변환 형식(format)의 문자열(str)을 TIMESTAMP로 변환 | 
| BIN_TO_NUM | BIN_TO_NUM(2진수) | 콤마로 구분된 2진수를 10진수로 변환 | 
| NUMTODSINTERVAL | NUMTODSINTERVAL(num, format) | 숫자(num)를 형식(format)에 맞는 숫자로 반환 format : DAY, HOUR, MINUTE, SECOND | 
| NUMTOYMINTERVAL | NUMTOYMINTERVAL(num, format) | 숫자(num)를 형식(format)에 맞는 숫자로 반환 format : MONTH, YEAR | 
1.1 TO_CHAR(num or date, format)
숫자(num) or 날짜(date)를 형식에 맞는 문자열로 변환
날짜 변환 형식 ( SYSDATE : 2022-05-13 22:45 )
| 형식 | 설명 | 사용 예 | 
| AM, A.M. | 오전 | TO_CHAR(SYSDATE, ‘AM’) → 오전 | 
| PM, P.M. | 오후 | TO_CHAR(SYSDATE, ‘PM’) → 오후 | 
| YYYY, YYY, YY, Y | 년도 | TO_CHAR(SYSDATE, ‘YYYY’) → 2022 TO_CHAR(SYSDATE, ‘YY’) → 22 | 
| MONTH, MON | 월 | TO_CHAR(SYSDATE, ‘MONTH’) → 5월 | 
| MM | 01~12 형식의 월 | TO_CHAR(SYSDATE, ‘MM’) → 05 | 
| D | 요일을 1~7로 표시 (1: 일요일 ~ 7:토요일) | TO_CHAR(SYSDATE, ‘D’) → 6 (6: 금요일) | 
| DAY | 요일 | TO_CHAR(SYSDATE, ‘DAY’) → 금요일 | 
| DD | 일을 01~31로 표시 | TO_CHAR(SYSDATE, ‘DD’) → 13 | 
| DDD | 1년 중 몇 일인지 001~365로 표시 | TO_CHAR(SYSDATE, ‘DDD’) → 133 | 
| DL | 현재 날짜를 요일까지 표시 | TO_CHAR(SYSDATE, ‘DL’) → 2022년 5월13일 금요일 | 
| HH, H12 | 시를 12시간 형식으로 표시 | TO_CHAR(SYSDATE, ‘HH’) → 10 | 
| H24 | 시를 24시간 형식으로 표시 | TO_CHAR(SYSDATE, ‘HH24’) → 22 | 
| MI | 분 | TO_CHAR(SYSDATE, ‘MI’) → 46 | 
| SS | 초 | TO_CHAR(SYSDATE, ‘SS’) → 33 | 
| WW | 1년 중 몇 번째 주인지 표시 | TO_CHAR(SYSDATE, ‘WW’) → 19 | 
-- 날짜 형식 변환
-- SYSDATE : 2022-04-28
SELECT TO_CHAR(SYSDATE, 'AM'), TO_CHAR(SYSDATE, 'PM') FROM DUAL;
       ----------------------  ----------------------
       [오후]                  [오후]
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
       ---------------------------------------
       2022-05-13 22:44:01
-- 1:일요일 ~ 7:토요일, 5: 목요일
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;
       ---------------------
       5
SELECT TO_CHAR(SYSDATE, 'DL') FROM DUAL;
       ---------------------
       [2022년 5월 13일 금요일]
SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL;
       ---------------------
       [금요일]
-- 17번째 주
SELECT TO_CHAR(SYSDATE, 'WW') FROM DUAL;
       ---------------------
       17
숫자 변환 형식
| 형식 | 설명 | 사용 예 | 
| , (콤마) | 쉼표 표시 | TO_CHAR(123456, ‘999,999’) → 123,456 | 
| . (소수점) | 소수점 표시 | TO_CHAR(123456.4, ‘999,999.9’) → 123,456.4 | 
| 9 0 | 한 자리 숫자 한 자리 숫자, 0으로 채워 반환 | TO_CHAR(12345, ‘999,999’) → 12,345 TO_CHAR(12345, '000,999') → 012,345 | 
| PR | 음수일 때 < >로 표시 | TO_CHAR(-123, ‘999PR’) → <123> | 
| RN, rn | 로마 숫자로 표시 | TO_CHAR(123, ‘RN’) → CXXIII | 
| S | 양수이면 +, 음수이면 - 표시 | TO_CHAR(123, ‘S999’) → +123 | 
| $ | $ 화폐 표시 | TO_CHAR(12345, '$999,999') → $12,345 | 
| L | Local 화폐 단위 표시 | TO_CHAR(12345, 'L999,999') → ₩12,345 | 
-- 숫자 형식 변환
SELECT TO_CHAR(123456.789, '999,999.9') FROM DUAL;
       --------------------------------
       [123,456.8]
SELECT TO_CHAR(12345, '000,999'), TO_CHAR(12345, '999,999') FROM DUAL;
       -------------------------  -------------------------
       [012,345]                  [12,345]
       
SELECT TO_CHAR(12345, '$999,999'), TO_CHAR(12345, 'L999,999') FROM DUAL;
       --------------------------  --------------------------
       [$12,345]                   [₩12,345]
SELECT TO_CHAR(10, 'X'), TO_CHAR(16, 'XX'), TO_CHAR(16, 'X') FROM DUAL;
       ----------------  -----------------  ----------------
       [A]               [10]               [##]
1.2 TO_NUMBER(str, format)
형식(format)의 문자열(str)을 숫자로 변환
SELECT TO_NUMBER('0123'), TO_NUMBER('1234.567') FROM DUAL;
       -----------------  ---------------------
       [123]              [1234.567]
SELECT TO_NUMBER('12,345', '999,999') FROM DUAL;
       ------------------------------
       [12345]
       
SELECT TO_NUMBER('$12,345.11', '$999,999.99') FROM DUAL;
       --------------------------------------
       [12345.11]
SELECT TO_NUMBER('12,345.56', '999,999.999') FROM DUAL;
       -------------------------------------
       [12345.56]
SELECT TO_NUMBER('A', 'X'), TO_NUMBER('10', 'XX') FROM DUAL;
       -------------------  ---------------------
       [10]                 [16]
1.3 TO_DATE(str, format), TO_TIMESTAMP(str, format)
TO_DATE(str, format) : 형식(format)의 문자열(str)을 날짜로 변환
TO_TIMESTAMP(str, format) : 형식(format)의 문자열(str)을 TIMESTAMP로 변환
SELECT TO_DATE('2022-05-13', 'YYYY-MM-DD') FROM DUAL;
       -----------------------------------
       [2022-05-13]
SELECT TO_TIMESTAMP('2022-05-13', 'YYYY-MM-DD') FROM DUAL;
       ----------------------------------------
       [22/05/13 00:00:00.000000000]
1.4 BIN_TO_NUM(2진수)
콤마로 구분된 2진수를 10진수로 변환
SELECT BIN_TO_NUM(1, 0), BIN_TO_NUM(1, 0, 0), BIN_TO_NUM(1,0,1,0) FROM DUAL;
       ----------------  -------------------  -------------------
       [2]               [4]                  [10]
1.5 NUMTODSINTERVAL(num, format)
숫자(num)를 형식(format)에 맞는 숫자로 반환
format : DAY, HOUR, MINUTE, SECOND
SELECT NUMTODSINTERVAL(48,'HOUR'), NUMTODSINTERVAL(3601,'SECOND') FROM DUAL;
       --------------------------  ------------------------------
       [+2 00:00:00.000000]=2일     [+00 01:00:01000000]=1시간1초
       
SELECT NUMTODSINTERVAL(121, 'MINUTE'), NUMTODSINTERVAL(10,'DAY') FROM DUAL;
       ------------------------------  -------------------------
       [+00 02:01:00.000000]=2시간1분 [+10 00:00:00.000000]=10일
1.6 NUMTOYMINTERVAL(num, format)
숫자(num)를 형식(format)에 맞는 숫자로 반환
format : MONTH, YEAR
SELECT NUMTOYMINTERVAL(37, 'MONTH'), NUMTOYMINTERVAL(1.5, 'YEAR') FROM DUAL;
       ----------------------------  ----------------------------
       [+03-01]=3년1개월             [+01-06]=1년6개월
참고
https://docs.oracle.com/database/121/SQLRF/functions002.htm#SQLRF20034
'Dev. Handbook > SQL, Oracle, MariaDB' 카테고리의 다른 글
| [Oracle] 내장함수 : 비교함수, 디코딩 함수 (0) | 2022.05.22 | 
|---|---|
| [Oracle] 내장 함수 : NULL 관련 함수 (1) | 2022.05.14 | 
| [Oracle] 내장 함수 : 날짜 함수, 시간 함수 (0) | 2022.05.10 | 
| [Oracle] 내장 함수 : 숫자 함수, 수학 함수 (0) | 2022.05.02 | 
| [Oracle] 내장 함수 : 문자열 함수 일람 (0) | 2022.04.28 | 
댓글