데이터 형 변환 함수 (이채남 선생님 저 '오라클 실습' 참고)
-- 데이터형 변환함수
-- 기본 사항
-- 날짜 ---> 문자 ---> 숫자
-- TO_CHAR TO_NUMBER
-- 날짜 <--- 문자 <--- 숫자
-- TO_DATE TO_CHAR
-- 날짜 --/--> 숫자 (불가능)
-- 날짜 <--/-- 숫자 (불가능)
-- TO_CHAR(1)
-- 날짜를 문자로
-- 기본예제
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; --2016-01-28 21:37:07
select to_char(sysdate,'YyyY') from dual; --2016
select to_char(sysdate,'YYY') from dual; --016
select to_char(sysdate,'YY') from dual; --16
select to_char(sysdate,'Y') from dual; --6
select to_char(sysdate,'SYEAR') from dual; -- TWENTY SIXTEEN
select to_char(sysdate,'YEAR') from dual; --TWENTY SIXTEEN
select to_char(sysdate,'Q') from dual; --1
select to_char(sysdate,'mm') from dual; --01
select to_char(sysdate,'month') from dual; --1월(January)
select to_char(sysdate,'mon') from dual; --1월(JAN)
select to_char(sysdate,'D') from dual; --5
select to_char(sysdate,'DD') from dual; --28
select to_char(sysdate,'DDD') from dual; --028
select to_char(sysdate,'DAY') from dual; --목요일 (Thursday)
select to_char(sysdate,'DY') from dual; --목 (THU)
select to_char(sysdate,'AM') from dual; --오후
select to_char(sysdate,'PM') from dual; --오후
select to_char(sysdate,'A.M.') from dual; --오후
select to_char(sysdate,'P.M.') from dual; --오후
select to_char(sysdate,'HH') from dual; --09
select to_char(sysdate,'HH24') from dual; --21
select to_char(sysdate,'MI') from dual; --37
select to_char(sysdate,'SS') from dual; --07
--응용
select to_char(sysdate,'DD') from dual; --28 --> 원본
select to_char(sysdate,'DDTH') from dual; --28TH (서수)
select to_char(sysdate,'DDSP') from dual; --TWENTY-EIGHT (숫자를 철자로)
select to_char(sysdate,'DDSPTH') from dual; --TWENTY-EIGHTH (서수를 철자로)
select to_char(sysdate,'DDTHSP') from dual; --TWENTY-EIGHTH (서수를 철자로2)
--따라하기
select to_char(sysdate,'yy/mm/dd') date1, --16/01/28
to_char(sysdate,'yyyy.mm.dd') date2, --2016.01.28
to_char(sysdate,'month dd.yyyy') date3, --1월 28.2016
to_char(sysdate,'DY DD MON YY') date4, --목 28 1월 16
to_char(sysdate,'Day Mon DD') date5 --목요일 1월 28
from dual;
-- 연습문제
select emp_name, emp_id, birth_date from temp; --> 생일과 요일 출력변환
select emp_name, emp_id, to_char(birth_date,'yyyy "년" month dd"일" Day') from temp; --> 정답
-- TO_CHAR(2)
-- 숫자를 문자로
select to_char(192939,'999999') from dual; --192939
select to_char(192939,'00000000') from dual; --00192939
select to_char(192939,'999,999') from dual; --192,939
select to_char(192.939,'999.99') from dual; --192.94
select to_char(192939,'$999999') from dual; --$192939
select to_char(192939,'L999,999') from dual; -- ₩192,939
select to_char(-192939,'999999MI') from dual; --192939- (마이너스표시)
select to_char(192939,'999999EEEE') from dual; 2E+05 (과학적표기)
--따라하기
select to_char(1234,'09,999') number1, --01,234
to_char(1234.56,'99,999.99') number2, --1,234.56
to_char(1234,'$99,999') number3, --$1,234
to_char(1234,'L99,999') number4, -- ₩1,234
to_char(-1234,'99,999MI') number5 --1,234-
-- to_char(-1234,'99,999EEEE')
from dual;
--연습문제
select salary,
to_char(salary, '099,999,999') SAL1,
to_char(salary, '999,999,999.00') SAL2,
to_char(salary, '$999,999,999') SAL3,
trim(to_char(salary, 'L999,999,999')) SAL4,
to_char(salary, '999,999,999') SAL5 ,
to_char(salary, '99EEEE') SAL6
from temp;
--TO_NUMBER
--문자를 숫자로(O)
--날짜를 숫자로(X)
--따라하기
select to_number('123456') TONUM1, --123456
to_number('123,456','999999') TONUM2 --123456
from dual;
--TO_DATE
--문자를 날짜로(O)
--숫자를 날짜로(X)
select to_date('1997-12-31 13:33:44','yyyy-mm-dd hh24:mi:ss')
from dual; -- 97/12/31
select round(sysdate - to_date('19700101','yyyy-mm-dd')) "며칠"
from dual; --16829
--1970년 1월 1일 00시00분00초에서 946075441초가 지나면??
select to_date('19700101000000','yyyymmddhh24miss') +
946075441 / (24*60*60)
from dual; -- 99/12/24
'Oracle_DB_Unix admin > 미분류' 카테고리의 다른 글
JOIN (오라클 및 ANSI 표준) -- '오라클 실습' 연습문제 풀이 겸 (0) | 2016.02.10 |
---|---|
그룹함수 (이채남 선생님 저 '오라클 실습' 참고) (0) | 2016.01.28 |
날짜 함수 (이채남 선생님 오라클 실습 2장 중) (0) | 2016.01.27 |
데이터 형 변환이 일어나는 예 (0) | 2015.10.25 |
TABLE에 대한 사소한 몇 가지의 의문 해결 (0) | 2015.10.25 |