1. MONTHS_BETWEEN


달수와 달수 사이를 구한다.



1
2
3
4
5
6
7
-- MONTHS_BETWEEN
SELECT MONTHS_BETWEEN
       (
       TO_DATE('2017-07-01','YYYY-MM-DD')
     , TO_DATE('2017-06-01','YYYY-MM-DD')
       ) AS MONTHS_BETWEEN
  FROM DUAL
cs

출력 결과




2. ADD_MONTHS


달수를 더한다.



1
2
3
-- ADD_MONTHS
SELECT ADD_MONTHS(TO_DATE('2017-07-01','YYYY-MM-DD'),1) AS ADD_MONTHS
  FROM DUAL
cs


출력 결과




3. NEXT_DAY


기준날짜에서 요일을 찾아 몇일인지 반환한다.



1
2
3
-- NEXT_DAY
SELECT NEXT_DAY(TO_DATE('2017-06-05','YYYY-MM-DD'),'FRIDAY'
  FROM DUAL
cs


출력 결과




4. LAST_DAY


기준날짜에서 마지막 날을 출력한다.



1
2
3
-- LAST_DAY
SELECT LAST_DAY(TO_DATE('2017-06-01','YYYY-MM-DD'))
  FROM DUAL
cs


출력 결과




5. TO_DATE


DATE 형식으로 출력한다.



1
2
3
4
5
6
7
8
9
10
11
12
-- TO_DATE1
SELECT TO_DATE('2017-06-01','YYYY-MM-DD') MDATE1
     , TO_DATE('2017/06/01','YYYY/MM/DD') MDATE2
     , TO_DATE('20170601','YYYY-MM-DD') MDATE3
     , TO_DATE('20170601','YYYYMMDD') MDATE4
     , TO_DATE('20170601112030','YYYYMMDDHH12MISS') MDATE5
     , TO_DATE('20170601232030','YYYYMMDDHH24MISS') MDATE6
     , TO_DATE('2017-06-01-11-20-30','YYYY-MM-DD-HH12-MI-SS') MDATE7
     , TO_DATE('2017-06-01-23-20-30','YYYY-MM-DD-HH24-MI-SS') MDATE8
     , TO_DATE('2017/06/01/11/20/30','YYYY/MM/DD/HH12/MI/SS') MDATE9
     , TO_DATE('2017/06/01/23/20/30','YYYY/MM/DD/HH24/MI/SS') MDATE10
  FROM DUAL
cs

출력 결과



1
2
3
4
5
6
7
8
9
10
11
12
13
-- TO_DATE2
SELECT TO_DATE(SYSDATE,'YYYY-MM-DD') MDATE1
     , SYSDATE MDATE2
     , TO_CHAR(SYSDATE) MDATE3
     , TO_CHAR(SYSDATE,'YYYY-MM-DD') MDATE4
     , TO_CHAR(SYSDATE,'YYYY/MM/DD') MDATE5
     , TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD') MDATE6
     , TO_DATE(TO_CHAR(SYSDATE,'YYYY/MM/DD'),'YYYY/MM/DD') MDATE7
     , TO_CHAR(SYSDATE,'YYYY-MM') MDATE8
     , TO_CHAR(SYSDATE,'YYYY/MM') MDATE9
     , TO_CHAR(SYSDATE,'MM') MDATE10
     , TO_CHAR(SYSDATE,'DD') MDATE11
  FROM DUAL
cs


출력 결과




6. DECODE


DECODE(VALUE, IF1, THEN1, IF2, THEN2)


DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출 할 수 있다.

DECODE(VALUE, IF1, THEN1, IF2, THEN2...) 형태로 사용 할 수 있다.

VALUE 값이 IF1일 경우에 THEN1 값을 반환하고, VALUE 값이 IF2일 경우에는 THEN2 값을 반환한다.

DECODE 함수 안에 DECODE함수를 중첩으로 사용 할 수 있다.



1
2
3
4
SELECT DEPTNO
     , DECODE(DEPTNO, 10'CLERK',20'MANAGER',30'SALESMAN') AS DECODE
     , DECODE(DEPTNO, 10, SAL)
  FROM EMP;
cs


출력 결과




7. CASE


CASE 

 WHEN 

 THEN 

 ELSE 

END 컬럼명


CASE 함수는 DECODE함수가 제공하지 못하는 비교연산의 단점을 해결할 수 있는 함수이다.

DECODE함수에서 비교연산을 수행하기 위해서는 GREATEST, LEAST등의 함수를 사용해야 하지만, CASE함수에서는 조건 연산자를 모두 사용 할 수 있다.

CASE함수는 IF.. THEN .. ELSE 구문과 비슷 하다. WHEN절 다음에 여러 조건이 올 수 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT JOB
     , CASE
        WHEN JOB='CLERK'
        THEN 'MY_CLERK'
       END JOB1
     , SAL
     , CASE 
        WHEN SAL<1000
        THEN SAL+200
       END SAL1
     , HIREDATE
     , CASE
        WHEN HIREDATE<TO_DATE('1981-03-01','YYYY-MM-DD')
        THEN ADD_MONTHS(HIREDATE,1)
       END HIREDATE1
  FROM EMP
cs


출력 결과



+ Recent posts