EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 200 30
7566 JONES MANAGER 7839 81/04/02 2975 30 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 300 30
7698 BLAKE MANAGER 7839 81/04/01 2850 30
7782 CLARK MANAGER 7839 81/06/01 2450 10
7788 SCOTT ANALYST 7566 82/10/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 3500 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
7900 JAMES CLERK 7698 81/10/03 950 30
7902 FORD ANALYST 7566 81/10/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
-- ROUND를 확인해보자.
SELECT ROUND(4567.678) 결과1, ROUND(4567.678,0) 결과2,
ROUND(4567.678,2) 결과3, ROUND(4567.678,-2) 결과4
FROM DUAL;
출력결과
결과1 결과2 결과3 결과4
4568 4568 4567.68 4600
-- TRUNC를 확인해보자.
SELECT TRUNC(4567.678) 결과1, TRUNC(4567.678,0) 결과2,
TRUNC(4567.678,2) 결과3, TRUNC(4567.678,-2) 결과4
FROM DUAL;
출력결과
결과1 결과2 결과3 결과4
4567 4567 4567.67 4500
-- 사원 테이블에서 급여를 30으로 나눈 나머지를 출력하자. 이름과 급여, 결과를 출력해보자.
SELECT E.ENAME, SAL, MOD(SAL,30) 결과
FROM C##SCOTT.EMP E;
출력결과
ENAME SAL 결과
SMITH 800 20
ALLEN 1600 10
WARD 1250 20
JONES 2975 5
MARTIN 1250 20
BLAKE 2850 0
CLARK 2450 20
SCOTT 3000 0
KING 5000 20
TURNER 1500 0
ADAMS 1100 20
JAMES 950 20
FORD 3000 0
MILLER 1300 10
-- 오늘 날짜 중 년도만 조회하고 싶다.
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
출력결과
EXTRACT(YEARFROMSYSDATE)
2022
SELECT MONTHS_BETWEEN(TO_DATE('02-02-1995','MM-DD-YYYY'), TO_DATE('01-01-1995', 'MM-DD-YYYY')) RES
FROM DUAL;
출력결과
RES
1.03225806451612903225806451612903225806
-- 사원테이블에서 10번, 30번 부서의 사원들의 입사일로부터 5개월이 지난 후 날자를 계산해서 출력해보자.
-- 출력예시 : ENAME, HIREDATE, A_MONTH로 출력
SELECT ENAME, HIREDATE, ADD_MONTHS(HIREDATE, 5) A_MONTH
FROM C##SCOTT.EMP
WHERE DEPTNO = 10 OR DEPTNO = 30
ORDER BY 2 DESC;
출력결과
ENAME HIREDATE A_MONTH
MILLER 82/01/23 82/06/23
KING 81/11/17 82/04/17
JAMES 81/10/03 82/03/03
MARTIN 81/09/28 82/02/28
TURNER 81/09/08 82/02/08
CLARK 81/06/01 81/11/01
BLAKE 81/04/01 81/09/01
WARD 81/02/22 81/07/22
ALLEN 81/02/20 81/07/20
-- 사원테이블에서 10번 부서 사원들의 입사일로부터 돌아오는 금요일을 계산해서 리턴하자.
SELECT ENAME, HIREDATE, NEXT_DAY(HIREDATE, 6)
FROM C##SCOTT.EMP
WHERE DEPTNO = 10;
출력결과
ENAME HIREDATE NEXT_DAY(HIREDATE,6)
CLARK 81/06/01 81/06/05
KING 81/11/17 81/11/20
MILLER 82/01/23 82/01/29
1 : 일요일 ~ 7 : 토요일
-- 현재 날짜에 ROUND와 TRUNC함수를 사용해보자.
SELECT to_char(sysdate, 'YY/MM/DD HH24:MI:SS') normal,
to_char(trunc(sysdate), 'YY/MM/DD HH24:MI:SS') trunc,
to_char(round(sysdate), 'YY/MM/DD HH24:MI:SS') round
FROM dual;
출력결과
NORMAL TRUNC ROUND
22/10/06 21:34:39 22/10/06 00:00:00 22/10/07 00:00:00
SELECT TO_CHAR(TO_DATE('98','RR'),'YYYY') test1,
TO_CHAR(TO_DATE('05','RR'),'YYYY') test2,
TO_CHAR(TO_DATE('98','YY'),'YYYY') test3,
TO_CHAR(TO_DATE('05','YY'),'YYYY') test4
FROM dual;
출력결과
TEST1 TEST2 TEST3 TEST4
1998 2005 2098 2005
SELECT TO_TIMESTAMP_TZ ('2004-8-20 1:30:00 -3:00', 'YYYY-MM-DD HH:MI:SS TZH:TZM')
FROM DAUL;
출력결과
TO_TIMESTAMP_TZ('2004-8-201:30:00-3:00','YYYY-MM-DDHH:MI:SSTZH:TZM')
04/08/20 01:30:00.000000000 -03:00
SELECT TO_TIMESTAMP('2004-8-20 1:30:00', 'YYYY-MM-DD HH:MI:SS')
FROM DUAL;
출력결과
TO_TIMESTAMP('2004-8-201:30:00','YYYY-MM-DDHH:MI:SS')
04/08/20 01:30:00.000000000
SELECT SYSDATE, SYSDATE + TO_YMINTERVAL('01-03') "15Months later"
FROM DAUL;
출력결과
SYSDATE 15Months later
22/10/06 24/01/06
SELECT SYSDATE, SYSDATE + TO_DSINTERVAL('003 17:00:00') "3days 17hours later"
FROM DUAL;
출력결과
SYSDATE 3days 17hours later
22/10/06 22/10/10