// 변환 함수
- 숫자 <-> 문자열 <-> 날짜
// NUMBER 형식을 문자열(VARCHAR2)로 변환 : TO_CHAR(NUMBER)
포맷 문자 | 설명 |
9 | 숫자 1개를 문자 1개로 바꾸는 역할 > 빈자리를 스페이스로 치환 ≒ %5d > 부호 자리 한 자리를 비움 |
0 | 숫자 1개를 문자 1개로 바꾸는 역할 > 빈자리를 0으로 치환 ≒ %05d > 부호 자리 한 자리를 비움 |
$, L | 통화 기호 표현 |
, | 천 단위 구분자 표시 |
. | 소수점 표시 |
SELECT TO_CHAR(123) || 'HELLO' FROM DUAL; -- 123HELLO
SELECT TO_CHAR(12345678, '99,999,999') || 'HELLO' FROM DUAL; -- 12,345,678HELLO
SELECT TO_CHAR(12345678, '099,999,999') || 'HELLO' FROM DUAL; -- 012,345,678HELLO
SELECT TO_CHAR(12345678.34, '099,999,999.99') || 'HELLO' FROM DUAL; --012,345,678.34HELLO
SELECT TO_CHAR(12345678.34567, '099,999,999.99') || 'HELLO' FROM DUAL; --012,345,678.35HELLO
select
weight,
'@' || to_char(weight) || '@',
'@' || to_char(weight, '99999') || '@',
'@' || to_char(weight, '00000') || '@',
'@' || to_char(-weight, '99999') || '@',
'@' || to_char(-weight, '00000') || '@'
from tblComedian;
select
100,
to_char(100, '$999'),
to_char(100, 'L999') --원화
from dual;
select
1234567.89,
to_char(1234567.89, '9,999,999.9')
from dual;
// DATE 형식을 문자열(VARCHAR2)로 변환 : TO_CHAR(DATETIME)★★★
포맷 문자 | 설명 |
YYYY/RRRR/YY/YEAR | 년도 표시 : 4자리/Y2K/2자리/영문 |
MM/MON/MONTH | 월 표시 : 2자리/영문 3자리/영문 전체 |
DD/DAY/DDTH | 일 표시 : 2자리/영문/2자리ST |
AM/PM | 오전/오후 표시 |
HH/HH24 | 시간 표시 : 12시간/24시간 |
MI | 분 표시 : 0~59분 |
SS | 초 표시 : 0~59초 |
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
select
sysdate,
to_char(sysdate, 'yyyy-mm-dd'),
to_char(sysdate, 'hh24:mi:ss'),
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'),
to_char(sysdate, 'day am hh:mi:ss')
from dual;
select
name,
ibsadate,
to_char(ibsadate, 'yyyy-mm-dd') as hire_date,
to_char(ibsadate, 'day') as day,
case
when to_char(ibsadate, 'd') in('1', '7') then '휴일 입사'
else '평일 입사'
end
from tblInsa;
select * from tblInsa
where to_char(ibsadate, 'yyyy') = '2000';
// 문자열을 날짜 형식으로 변환 : ★★★TO_DATE(문자열, 날짜포맷), TO_TIMESTAMP(문자열)
SELECT TO_DATE('2023-02-19') FROM DUAL; -- 23/02/19
SELECT TO_DATE('2023-02-19 11:04:50', 'YYYY-MM-DD HH:MI:SS') FROM DUAL; -- 23/02/19
SELECT TO_TIMESTAMP('2023-02-19 23:04:50', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
-- 23/02/19 23:04:50.000000000
select
sysdate,
'2023-03-16',
to_date('2023-03-16') as time1,
to_date('2023-03-16' , 'yyyy-mm-dd') as time2,
to_date('20230316') as time3,
to_date('20230316', 'yyyy-mm-dd') as time4,
to_date('2023/03/16') as time5,
to_date('2023/03/16', 'yyyy/mm/dd') as time6,
to_date('2023-03-16 15:28:25', 'yyyy-mm-dd hh24:mi:ss') as time7 --*******
from dual;
select * from tblInsa
where ibsadate between to_date('2000-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
and to_date('2000-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
// 문자열을 숫자 형식으로 변환 : TO_NUMBER(문자열)
SELECT TO_NUMBER('1994') FROM DUAL; --1994
SELECT TO_NUMBER('2') + 3 FROM DUAL; --5
select
123 * 2,
to_number('123') * 2,
'123' * 2
from dual;
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
[Oracle] 집계 함수, Group by절, Having절 (0) | 2023.02.20 |
---|---|
[Oracle] NULL 관련 함수, DECODE 함수 (0) | 2023.02.19 |
[Oracle] 날짜 시간 함수 (0) | 2023.02.18 |
[Oracle] 숫자 함수 (0) | 2023.02.17 |
[Oracle] 문자열 함수 (0) | 2023.02.16 |