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 |
댓글