TO_CHAR | 날짜와 숫자를 문자로 변환한다, 출력데이터 형식을 지정한다. TO_CHAR(날짜, 출력형식), TO_CHAR(숫자, 출력형식) |
TO_DATE | 데이터를 날짜형으로 해석한다. TO_DATE(문자, 해석형식) |
TO_NUMBER | 데이터를 숫자로 해석한다. 대부분의 경우 오라클의 자동형변환에 의해 숫자로 읽혀지므로 사용빈도가 낮다. SQL보다 PL-SQL에서 간혹 사용된다. |
예제1) 현재 날짜를 다양한 형식으로 출력한다
SELECT TO_DATE(sysdate, 'YYYY/MM/DD') date1,
TO_DATE(sysdate, 'YYYY/MM/DD:HH24:MI:SS') date2,
TO_DATE(sysdate, 'YYYY/MM/DD:HH:MI:SS AM') date3 FROM dual;
SELECT TO_DATE(sysdate, 'YYYY/MM/DD') Today FROM dual;
SELECT TO_DATE(sysdate, 'DAY Mon YY') Today FROM dual;
SELECT TO_DATE(sysdate, '"오늘은 "YYYY"년 "MM"월 "DD"일 입니다."') Today FROM dual;
예제2) 다양한 숫자를 출력해보자
SELECT TO_CHAR(12345.6789, '999,999.9999') num FROM dual;
SELECT TO_CHAR(12345.6789, '$999,999') dollar FROM dual;
SELECT TO_CHAR(12345.6789, 'L999,999') won FROM dual;
// MI: 음수의 -기호를 오른쪽에 표기
SELECT TO_CHAR(-1234, '999,999MI') num FROM dual;
// EEEE: 실수 표현법을 이용
SELECT TO_CHAR(123456789, '9.999EEEE') num FROM dual;
예제3) 10번부서 사원의 보너스가 급여의 몇 퍼센트인지 검색(급여는 월간 급여이고 보너스는 연간 보너스이다. 보너스가 null인 경우 0으로 환원해서 검색한다)
SELECT eno, ename, TO_CHAR(NVL(comm, 0)/(sal*12)*100, '099.99')||'%' 급여비율
FROM emp WHERE dno=20;
예제4) 1992년 이전에 입사한 사원의 정보를 검색
// 문자열을 데이트 자료형으로 바꿔줌으로 비교가 가능하다
SELECT eno, ename, hdate
FROM emp WHERE hdate < TO_DATE('1992/01/01', 'YYYY/MM/DD');
'Programming > SQL' 카테고리의 다른 글
[Oracle] 14. 트랜잭션과 잠금(Exclusive Lock, Share Lock, Dead Lock, Undo Segment) (0) | 2019.04.26 |
---|---|
[Oracle] 13. 단일 행 서브쿼리, 다중 행 서브쿼리(IN, ANY, ALL) (0) | 2019.04.24 |
[Oracle] 11. 날짜 출력 포맷 (0) | 2019.04.23 |
[Oracle] 10. 다양한 날짜함수(ROUND, TRUNC, MONTH_BETWEEN, ADD_MONTHS, NEXT_DAY) (0) | 2019.04.23 |
[Oracle] 09. 다양한 문자함수(LOWER, UPPER, INITCAP, SUBSTER, TRIM, LPAD, RPAD, LENGTH, TRANSLATE, REPLACE) (0) | 2019.04.23 |