본문 바로가기

ORACLE

오라클 숫자, 날짜와 관련한 함수


* 숫자함수/날짜함수

------------------------------------------------------------------------------

   구 분           함 수                                 내 용

------------------------------------------------------------------------------

                   ROUND             해당 소수점 자리에서 반올림할 때

                   TRUNC             해당 소수점 자리에서 절삭할 때

                   MOD(m/n)        m을 n으로 나누고 남은 나머지를 리턴할 때

                   ABS                 숫자 값을 절대값으로 바꾼다

                   SIGN                숫자가 양수:+1, 음수:-1, 0:0

 숫자함수      FLOOR             실수값을 정수값으로

                   CEIL                그 수보다 가장 크거나 작은값을 리턴

                   POWER            해당 수에 대한 지수값을 표현

                   LOG                로그값으로 변환

                   SIN                  SIN값

                   COS                COS값

                   TAN                 TAN값

------------------------------------------------------------------------------

                   SYSDATE         현재 시스템 날짜를 보여줄 때

                   ADD_MONTHS   지정한 날짜에 몇 월을 추가한 결과의 월을 계산할 때

                   LAST_DAY        해당 월의 마지막 날짜를 알고자 할 때

 날짜함수      NEW_TIME        해당 표준시로 시간을 변환할 때

                   NEXT_DAY        해당 날짜의 다음 지정한 날짜로 현환할 때

                   NONTH_BETWEEN   지정된 월 간의 월수를 알고자 할 때

------------------------------------------------------------------------------

 

* 숫자함수 예제....

-정의된 값을 절대값으로 변환 합니다

  SQL> SELECT ABS(-15) FROM DUAL ;

           ABS(-15)

         -----------

               15

 

-정의된 값의 올림된 값으로 변환합니다

 SQL> SELECT CEIL(15.7) FROM DUAL ;

         

          CEIL(15.7)

       -------------

              16

 

-정의된 값의 내림된 값으로 변환합니다

 SQL> SELECT FLOOR(15.7) FROM DUAL ;

 

          FLOOR(15.7)

        ---------------

               15

 

-정의된 산술식의 COSINE 값으로 변환합니다

 SQL> SELECT COS(180*3.14/180) FROM DUAL ;

 

          COS(180*3.14/180)

        --------------------

                     -.99999873

 

-정의된 숫자의 지수승값을 계산합니다

 SQL> SELECT EXP(4) FROM DUAL ;

 

          EXP(4)

        ---------

          54.59815

 

-뒤에 정의된 수로 앞에 정의된 수를 나눈 나머지 값을 반환합니다

 SQL> SELECT MOD(11,4) FROM DUAL ;

 

          MOD(11,4)

        ------------

                3

 

-정의된 수를 지정한 자리 수에서 반올림합니다

 SQL> SELECT ROUND(15.193 , 1) FROM DUAL ;

 

          ROUND(15.193 , 1)

        -------------------

                  15.2

 

-정의된 값이 음수이면 -1 , 0 이면 0, 양수이면 1을 리턴합니다

 SQL> SELECT SIGN(-15) FROM DUAL ;

 

          SIGN(-15)

        ------------

               -1

 

-정의된 수를 지정한 자리 수 에서 절삭합니다

 SQL> SELECT TRUNC(15.97 , 1) FROM DUAL ;

 

          TRUNC(15.79 , 1)

         -----------------

                  15.7

 

* 날짜 함수 예제

 

-현재 시스템 날짜를 제공합니다

 SQL> SELECT SYSDATE FROM DUAL ;

 

          SYSDATE

        -----------

          06/11/13

 

-해당 날짜에 지정한 달 수만큼 더합니다

 SQL> SELECT HIREDATE , ADD_MONTHS(HIREDATE , 1)

          FROM EMP WHERE EMPNO = 7782 ;

 

          HIREDATE     ADD_MONT

        --------------------------

          81/06/09         81/07/09

 

-정의된 날짜의 달에서 마지막 일이 몇 일인지 알 수 있습니다

 SQL> SELECT HIREDATE , LAST_DAY(HIREDATE)

          FROM EMP WHERE EMPNO = 7782 ;

 

          HIREDATE     LAST_DAY

       --------------------------

            81/06/09       81/06/30

 

-정의된 두 날짜간의 차이 값을 알 수 있습니다

 SQL> SELECT HIREDATE , MONTHS_BETWEEN(SYSDATE , HIREDATE)

          FROM EMP WHERE EMPNO = 7782 ;

 

          HIREDATE          MONTHS_BETWEEN(SYSDATE , HIREDATE)

        ------------------------------------------------------------

           81/06/09                                                     252.930883

 

-정의된 날짜를 녀도 값을 기준으로 반올림 합니다

 SQL > SELECT

           ROUND(TO_DATE(' 27-OCT-98' , 'DD-MON-YY' ) ,

           'YEAT' ) FROM DUAL ;

 

           ROUND(TO

          ------------

              99/01/01


출처 : http://cafe.naver.com/it2006/57




2.1 날짜를 다양하기 표시하기

- 날짜를 yyyy/mm/dd 형태로 표시하기

   SELECT TO_CHAR(to_date('92-FEB-16','YY-MON-DD'), 'yyyy/mm/dd') FROM dual;

 

2.2 날짜에 대한 반올림/반내림 값 구하기
- 날짜 중에 일(dd)에 대한 반올림

   SELECT ROUND(to_date('92-FEB-16','YY-MON-DD'), 'DAY') FROM dual;

- 날짜 중에 월(mm)에 대한 반올림

   SELECT ROUND (to_date('92-FEB-16','YY-MON-DD'), 'MONTH') FROM dual;

- 날짜 중에 년(yy)에 대한 반올림

   SELECT ROUND (to_date('92-FEB-16','YY-MON-DD'), 'YEAR') FROM dual;

- 날짜 중에 일(dd)에 대한 반내림

   SELECT TRUNC(to_date('92-FEB-16','YY-MON-DD'), 'DAY') FROM dual;

- 날짜 중에 월(mm)에 대한 반내림

   SELECT TRUNC (to_date('92-FEB-16','YY-MON-DD'), 'MONTH') FROM dual;

- 날짜 중에 년(yy)에 대한 반내림

   SELECT TRUNC (to_date('92-FEB-16','YY-MON-DD'), 'YEAR') FROM dual;

 

2.3 날짜에 대한 덧셈 연산하기
- 날짜 중에 일(dd)를 더하기 위해서

   SELECT to_date(’92-JUN-27’, ‘YY-MON-DD’) + 1 FROM dual

- 날짜 중에 월(mm)을 더하기 위해서

   SELECT ADD_MONTHS(to_date(’92-JUN-27’, ‘YY-MON-DD’),1) FROM dual;

- 날짜 중에 년(yy)을 더하기 위해서

   SELECT ADD_MONTHS(to_date(’92-JUN-27’, ‘YY-MON-DD’),12) FROM dual;

- 주어진 날짜로부터 다음 번에 나오는 월요일을 구하기 위해서

   SELECT next_day (to_date(’92-JUN-27’, ‘YY-MON-DD’) , ‘Monday’) FROM dual;

 

2.4 날짜에 대한 뺄셈 연산하기
- 날짜 중에 일(dd)를 빼기 위해서

   SELECT to_date(’92-JUN-27’, ‘YY-MON-DD’) - 1 FROM dual

- 날짜 중에 월(mm)을 빼기 위해서

   SELECT ADD_MONTHS(to_date(’92-JUN-27’, ‘YY-MON-DD’),-1) FROM dual;

- 날짜 중에 년(yy)을 빼기 위해서

   SELECT ADD_MONTHS(to_date(’92-JUN-27’, ‘YY-MON-DD’),-12) FROM dual;

- 두 날짜 사이의 일 수 계산 하기

   SELECT to_date(’92-JUN-29’, ‘YY-MON-DD’) - to_date(’92-JUN-27’, ‘YY-MON-DD’) FROM dual;

- 두 날짜 사이의 월 수 계산 하기

   SELECT MONTHS_BETWEEN(to_date(’92-JUN-29’, ‘YY-MON-DD’), to_date(’92-JUN-27’, ‘YY-MON-DD’)) FROM dual;

- 두 날짜 사이의 년 수 계산 하기

   SELECT days(date('92-JUN-26'), date(’92-OCT-29’)) / 365.254

   SELECT (to_date(’92-JUN-29’, ‘YY-MON-DD’) – to_date(’92-JUN-27’, ‘YY-MON-DD’) ) /365.254 FROM dual;

 

2.5 날짜에 대한 요일/월 이름 구하기
- 주어진 날짜에서 요일 구하기

   SELECT TO_CHAR(to_date('92-06-29','YY-MM-DD'), 'DAY') FROM dual;
   SELECT TO_CHAR (to_date('92-06-29','YY-MM-DD'), 'DY') FROM dual;

- 주어진 날짜에서 월 이름 구하기

   SELECT TO_CHAR(to_date('92-06-29','YY-MM-DD'), 'MONTH') FROM dual;
   SELECT TO_CHAR(to_date('92-06-29','YY-MM-DD'), 'MON') FROM dual;

 

2.6 날짜에 대한 일/월 구하기
- 주어진 날짜에서 일 구하기
   SELECT TO_NUMBER(to_char(to_date('92-06-29','YY-MM-DD'), 'DD')) FROM dual;

- 주어진 날짜에서 요일을 수로 구하기
   SELECT TO_NUMBER(to_char(to_date('92-06-29','YY-MM-DD'), 'D')) FROM dual;

- 주어진 날짜에서 월 구하기
   SELECT TO_NUMBER(to_char(to_date('92-06-29','YY-MM-DD'), 'MM')) FROM dual;


2.7 현재 일자 구하기

   SELECT SYSDATE FROM dual;
   SELECT CURRENT_DATE FROM dual;


2.8 해당 월의 마지막 날짜 구하기
   SELECT LAST_DAY(sysdate) FROM dual;


2.9 NEW_TIME

   NEW_TIME ( date-expression, timezone, new timezone )