-- 변환 함수


-- TO_CHAR : 변환함수

select sysdate from dual;

select to_char(sysdate, 'month') from dual; -- 월만 출력

select to_char(sysdate, 'yyyy') from dual;  -- 년도만 출력

select to_char(sysdate, 'dy') from dual;  -- 요일만 출력


-- emp 테이블에서 담당업무가 MANAGER 이거나 부서코드가 20인 사원의 입사월을 출력하라

-- 사원명, 담당업무, 부서코드, 입사일, 입사월

select * from emp;

select ename 사원명, job 담당업무, deptno 부서코드, hiredate 입사일, to_char(hiredate, 'month') 입사월 from emp where job='MANAGER' or deptno=20;

select ename 사원명, job 담당업무, deptno 부서코드, hiredate 입사일, to_char(hiredate, 'mm') 입사월 from emp where job='MANAGER' or deptno=20;


-- TO_NUMBER : 문자를 숫자로 변환 / 안써도 됨

-- select to_number('1234')+100 from dual;

select '1234'+100 from dual;

select '1234'+'100' from dual;

'응용 SoftWare > Oracle' 카테고리의 다른 글

GROUP BY절과 HAVING절  (0) 2017.01.03
그룹 함수  (0) 2017.01.03
날짜 처리 함수  (0) 2017.01.02
General Function  (0) 2017.01.02
[예제] 이메일에서 아이디와 도메인 분리하기  (0) 2016.12.30
Posted by Hyun CHO
,

-- 날짜 처리 함수


-- LAST_DAY(d) : (d)달의 마지막 날 표시

select sysdate, last_day(sysdate) from dual;

select ename, hiredate, last_day(hiredate) from emp;  -- 입사한 달의 마지막 날


--ADD_MONTHS(a, b) : a 날짜에 b의 값을 더한 달을 표시

select sysdate, add_months(sysdate, 5) from dual; -- 오늘을 기준으로 5개월 뒤

select add_months('2017-01-31', 1) from dual; --  17년 1월 31일을 기준으로 1개월 뒤

select add_months(sysdate, -3) from dual; -- 오늘을 기준으로 3개월 전


-- emp 테이블의 사원의 입상후 20개월 후는 언제인가?

select * from emp;

select ename, hiredate, add_months(hiredate, 20) from emp;


-- MONTHS_BETWEEN(a1, a2) : 날짜와 날짜 사이의 개월수 구하기

select floor(months_between('2016/12/10', '2017/02/25')) from dual;


-- emp 테이블의 사원은 근무기간은 몇개월인가?

select * from emp;

select ename, hiredate, ceil(months_between(sysdate, hiredate)) 근속개월 from emp;


-- ROUND(d, [f]) : 날짜의 반올림 / year, month, day

-- TO_DATE() : 문자열을 날짜로 변환

-- 년도를 기준으로 반올림(7월)

select round(to_date('2016/08/01', 'yyyy/mm/dd'), 'year') from dual;

select * from empcopy;

update empcopy set hiredate='2016/10/10' where empno=6666;

select round(sysdate, 'year') from dual;


-- 입사일 기준 년도를 반올림하여 출력하라.

-- 사원명, 입사일, 반올림한 년도

select * from emp;

select ename 사원명, hiredate 입사일, round(hiredate, 'year') 반올림년도 from emp;


-- 월을 기준으로 반올림

select round(sysdate, 'month') from dual; -- 오늘 기준

select round(to_date('2016/10/17'), 'month') from dual; -- 특정일 기준

select ename, hiredate, round(hiredate, 'month') from emp;  -- emp 테이블 입사일 기준


-- 일을 기준으로 반올림

-- TO_CHAR() : 날짜나 숫자를 문자로 변환

select round(sysdate, 'day') from dual;

select to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss pm') from dual;


-- EMP 입사일의 날짜를 반올림하라.

-- 출력은 이름, 입사일, 반올림한 입사일

-- 입사일은 mm/dd hh24:mi:ss 표시

select * from emp;

select ename 사원명, to_char(hiredate, 'mm/dd hh24:mi') 입사일, round(hiredate, 'dd') 반올림 from emp;


-- 날짜에 대한 산술연산

-- 오늘을 기준으로 1000일 후

select sysdate+1000 from dual;


-- 문자형으로 출력

select to_char(sysdate+1000, 'yyyy-mm-dd hh') from dual;  


-- 오늘을 기준으로 100일 전

select sysdate-100 from dual;


-- 2016-11-23 기준으로 960일 후는 언제인가?

select to_date('2016/11/23')+960 from dual;

select to_date('2016-11-23', 'yyyy-mm-dd')+960 from dual;


-- 날짜 경과 계산

select sysdate - to_date('2016/11/23', 'yyyy/mm/dd') from dual;


-- emp 테이블의 사원중 부서코드가 30 사원의 근무일수를 구하라.

-- 사원명, 입사일, 급여, 근무일수, 부서코드

select * from emp;

select ename 사원명, hiredate 입사일, sal 급여, ceil(sysdate-hiredate) 근무일수, deptno 부서코드 from emp where deptno=30;

'응용 SoftWare > Oracle' 카테고리의 다른 글

그룹 함수  (0) 2017.01.03
변환 함수  (0) 2017.01.03
General Function  (0) 2017.01.02
[예제] 이메일에서 아이디와 도메인 분리하기  (0) 2016.12.30
문자열 처리 함수  (0) 2016.12.30
Posted by Hyun CHO
,

-- General Function


-- NVL : null값 처리 (not value)

select ename, sal, comm, comm+100 from emp;

select ename, sal, comm, nvl(comm, 0)+100 from emp;


-- emp 테이블에서 사원명, 관리자코드, 급여, 보너스를 출려하되 관리자코드 null인 경우 0000 으로 보너스는 null인 경우 0으로 출력하라.

select ename, nvl(mgr, '0000'), sal, nvl(comm, 0) from emp;


-- DECODE : 조건문 / 데이터를 다른 값으로 변환

select ename, deptno, decode(deptno, 10, '어카운팅', 20, '리서치', 30, '세일즈', 40, '오퍼레이션') 부서명 from emp;


-- emp 테이블에서 사원번호, 사원명, 담당업무, 급여를 출력하되 담당업무는 CLERK-사무직, SALESMAN-세일즈맨, MANAGER-매니저, ANALYST-시스템분석가, PRESIDENT-대표이사로 표시하라.

select * from emp;

select empno, ename, decode(job, 'CLERK', '사무직', 'SALESMAN', '세일즈맨', 'MANAGER', '매니저', 'ANALYST', '시스템분석가', 'PRESIDENT', '대표이사') job, sal from emp;


'응용 SoftWare > Oracle' 카테고리의 다른 글

변환 함수  (0) 2017.01.03
날짜 처리 함수  (0) 2017.01.02
[예제] 이메일에서 아이디와 도메인 분리하기  (0) 2016.12.30
문자열 처리 함수  (0) 2016.12.30
숫자 함수  (0) 2016.12.30
Posted by Hyun CHO
,