INTERVAL 데이터 형

 

정의)

  - INTERVAL 데이터 형은 두 Datetime 값의 차이를 저장하기 위해 사용됩니다.

  - INTERVAL 에는 두 가지 종류의 정밀도를 제공합니다.

       . Year-month

       . Day-time

데이터형)

        

  

 

필드)

        

  

 

INTERVAL YEAR TO MONTH 데이터 형)

INTERVAL YEAR TO MONTH 는 시간 간격을 연 및  및 월을 이용하여 저장합니다.

     

     INTERVAL YEAR [(year_precision)] TO MONTH

         예) INTERVAL '312-2' YEAR(3) TO MONTH

                   : 312 년 2 개월

         예) INTERVAL '312' YEAR(3)

                    : 312 년

         예) INTERVAL '300' MONTH(3)

                   : 300 개월

 

INTERVAL YEAR TO MONTH 데이터 형)

     예)INTERVAL YEAR [(year_precision)] TO MONTH

 

     CREATE TABLE orders (

        warranty INTERVAL YEAR TO MONTH

     );

     INSERT INTO orders VALUES ('2-6');

 

     SELECT warranty duration FROM orders;

     DURATION

     --------

     +02-06

 

 INTERVAL DAY TO SECOND 데이터 형)

       예)INTERVAL DAY TO SECOND는 시간 간격을 일, 시간, 분, 초를 이용하여 저장합니다.

 

          INTERVAL DAY[(day_precision)] TO Second

 

         INTERVAL '6 03:30:16' DAY TO SECOND

            : 6 일 3 시간 30 분, 그리고 15 초

 

         INTERVAL '6 00:00:00' DAY TO SECOND

            : 6 일

 

      예) INTERVAL DAY [day_precision)] TO SECOND

 

          CREATE TABLE orders (

               warranty INTERVAL DAY(2) TO SECOND

          );

 

          INSERT INTO orders VALUES ('90 00:00:00');

          SELECT warranty FROM orders;

          WARRANTY

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

          +90 00:00:00

 

 

 

'(DB) Oracle > 함수' 카테고리의 다른 글

Oracle - Datetime 과 Interval 데이터 형  (0) 2017.01.18
Oracle - TIME_ZONE 세션 파라미터  (0) 2017.01.18
Oracle - Datetime 함수 목록  (0) 2017.01.18
Oracle - 날짜형 실전예제  (0) 2017.01.18
Oracle - 분석용 함수  (0) 2017.01.18
Posted by 농부지기
,

 

Oracle - Datetime 함수 목록

 

   1. CURRENT_DATE

   2. CURRENT_TIMESTAMP

   3. LOCALTIMESTAMP

   4. DBTIMEZONE

   5. FROM_TZ

   6. SESSIONTIMEZONE

   7. TO_YMINTERVAL

   8. TO_YMININTERVAL

   9. TO_TIMESTAMP

   10. TO_TIMESTAMP_TZ

   11. TZ_OFFSET

   12. EXTRACT

   13. SYS_EXTRACT_UTC

   14. SYSTIMESTAMP

CURRENT_DATE  

세션의 현재 날짜를 반환합니다.

반환값의 데이터 형은 DATE입니다.

 

예)

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY H24:MI:SS';

ALTER SESSION SET TIME_ZONE = '-5:0';

SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

SESSION CURRENT_DATE

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

-05:00  04-APR-2000 13:14:03

 

ALTER SESSION SET TIME_ZONE = '-8:0';

SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

SESSION CURRENT_DATE

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

-08:00  04-APR-2000 10:14:33

CURRENT_TIMESTAMP

세션의 현재 timestamp 값을 반환합니다.

반환되는 데이터 형은 TIMESTAMP WITH TIME ZONE입니다.

 

예)

ALTER SESSION SET TIME_ZONE = '-07:00';

 

SELECT SESSIONTIMEZONE,CURRENT_TIMESTAMP FROM DUAL;

SESSION CURRENT_TIMESTAMP

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

-07:00  19-SEP-2000 15:38:10.331911 -07:00

 

ALTER SESSION SET TIME_ZONE = '-04:00';

 

SELECT SESSIONTIMEZONE,CURRENT_TIMESTAMP FROM DUAL;

SESSION CURRENT_TIMESTAMP

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

-04:00  19-SEP-2000 18:38:10.331911 -04:00

 

 

LOCAL_TIMESTAMP

세션의 현재 timestamp 값을 반환합니다.

반환되는 데이터 형은 TIMESTAMP입니다.

 

예)

ALTER SESSION SET    TIME_ZONE = '-8:00';

 

SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

 

CURRENT_TIMESTAMP                    LOCALTIMESTAMP

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

19-SEP-00 11:54:25.655551 -08:00 19-SEP-00 11:54:25.655551

 

ALTER SESSION SET    TIME_ZONE = '-5:00';

 

SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

 

CURRENT_TIMESTAMP                    LOCALTIMESTAMP

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

19-SEP-00 14:54:25.676207 -05:00 19-SEP-00 14:54:25.676207

DBTIMEZONE

데이터베이스 시간대를 반환합니다.

 

예)

SELECT DBTIMEZONE FROM DUAL;

DBTIMEZ

-------

+00:00

 

FROM_TZ

주어진 timestamp과 시간대로부터 TIMESTAMP WITH TIME ZONE 값을 반환합니다.

 

예)

SELECT FROM_TZ(TIMESTAMP ’2000-03-28 08:00:00’, ’3:00’)

  FROM DUAL;

FROM_TZ(TIMESTAMP’2000-03-28 08:00:00’,’3:00’)

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

28-MAR-00 08.00.00 AM +03:00

SESSIONTIMEZONE

현 세션의 시간대를 반환합니다.

 

예)

SELECT SESSIONTIMEZONE

  FROM DUAL;

 

SESSION

-------

-05:00

 

TO_DSINTERVAL

주어진 문자열을 INTERVAL DAY TO SECOND 데이터 형으로 변환합니다.

 

예)

SELECT last_name, hire_date,

       hire_date + TO_DSINTERVAL('100 10:00:00')    

       hiredate2

  FROM employees;

 

LAST_NAME                 HIRE_DATE HIREDATE2

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

King                      17-JUN-87 25-SEP-87

Kochhar                   21-SEP-89 30-DEC-89

De Haan                   13-JAN-93 23-APR-93

TO_YMINTERVAL

주어진 문자열을 INTERVAL YEAR TO MONTH 데이터 형으로 변환합니다.

 

예)

SELECT hire_date,

       hire_date + TO_YMINTERVAL('01-02') ytm

  FROM employees;

 

HIRE_DATE YTM

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

17-JUN-87 17-AUG-88

21-SEP-89 21-NOV-90

13-JAN-93 13-MAR-94

03-JAN-90 03-MAR-91

21-MAY-91 21-JUL-92

 

 

TO_TIMESTAMP

        주어진 문자열을 TIMESTAMP 데이터 형으로 변환합니다.

 

예)

SELECT TO_TIMESTAMP('1999-12-01 11:00:00',

    'YYYY-MM-DD HH:MI:SS') Timestamp

  FROM DUAL;

 

TIMESTAMP

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

01-DEC-99 11.00.00.000000000 AM

 

 

TO_TIMESTAMP_TZ

주어진 문자열을 TIMESTAMP WITH TIME ZONE 데이터 형으로 변환합니다.

 

예)

SELECT TO_TIMESTAMP_TZ('1999-12-01 11:00:00 -8:00',

    'YYYY-MM-DD HH:MI:SS TZH:TZM') TIMESTAMPTZ

  FROM DUAL;

 

TIMESTAMPTZ

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

01-DEC-99 11.00.00.000000000 AM -08:00

 

TZ_OFFSET

주어진 지역명으로부터 시간대의 절대 차이를 반환합니다.

 

예)

SELECT TZ_OFFSET('US/Eastern')

FROM DUAL;

 

TZ_OFFS

-------

-04:00

 

EXTRACT

Datetime 및 Interval로부터 특정 필드를 추출합니다.

 

예)

SELECT EXTRACT(YEAR FROM DATE '1998-09-20')

  FROM DUAL;

 

EXTRACT(YEARFROMDATE'1998-09-20')

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

                             1998

 

SYS_EXTRACT_UTC

주어진 timestamp 값으로부터 UTC (GMT) 값을 반환합니다.

 

예)

SELECT SYS_EXTRACT_UTC(TIMESTAMP

       ’2000-03-28 11:30:00.00 -08:00’)

  FROM DUAL;

SYS_EXTRACT_UTC(TIMES

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

28-MAR-00 07.30.00 PM

 

 

SYSTIMESTAMP

시스템 날짜를 반환하되, 소수점 이하 단위의 초와 데이터베이스 시간대를 포함한 값을 반환합니다.

 

예)

SELECT SYSTIMESTAMP

  FROM DUAL;

SYSTIMESTAMP

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

20-SEP-00 05.51.54.056056 -07:00

 

 

 

 

 

'(DB) Oracle > 함수' 카테고리의 다른 글

Oracle - TIME_ZONE 세션 파라미터  (0) 2017.01.18
Oracle - 날짜_Interval  (0) 2017.01.18
Oracle - 날짜형 실전예제  (0) 2017.01.18
Oracle - 분석용 함수  (0) 2017.01.18
Oracle - 기타 함수  (0) 2017.01.18
Posted by 농부지기
,

                              [날짜형 실전예제]

결과가 일자

 

현재 날자에서 하루 전

select sysdate() - 1       from dual ;

 

1시간을 빼기

select sysdate() - 1/12    from dual ;

 

1분을 빼기

select sysdate() - 1/12/60 from dual ;

 

결과가 월

 

다음월 

select to_char(add_months(to_date('20020201', 'yyyymmdd'), 1),'yyyymm')
from   dual;

 

millisecond 보기

 

select to_char(current_timestamp, 'yyyy.mm.dd HH24:MI:SS-XFF') from dual;

 

select to_char(sysdate, 'yyyy.mm.dd HH:MI:SS')   from  dual;

         select to_char(sysdate, 'yyyy.mm.dd HH24:MI:SS')   from  dual;

 

to_date에서 (일자, 'YYYYMMDDHH24MI') 일 경우
00:00 시 ~ 23:59  까지만 가능하다. 즉, 일자에  '200409202400'  으로 하게 되면

      out_return final-->-1850,ORA-01850: hour must be between 0 and 23  오류가 발생한다.

 

날수/월수/년수 구하기

 

두날짜 사이의 시간구하기

TRUNC((to_date(종료일자,'YYYYMMDDHH24MI')
     -
to_date(시작일자,'YYYYMMDDHH24MI')) * 24, 2);

 

두날짜 사이의 월수구하기

MONTHS_BETWEEN((TO_DATE('종료일자') + 1,
                
TO_DATE('시작일자')));

 

년수 구하기
       

TRUNC(MONTHS_BETWEEN(TO_DATE('종료일자') + 1,                      TO_DATE('시작일자')) / 12, 0)

 

타입 변경

 

문자 타입을 --> 날짜 타입으로 변경 : TO_DATE(문자형 날짜, '형태')
                                                             (형태 예, 'YY/M/DD')

 

날자 타입을 --> 문자 타입으로 변환  : TO_CHAR(sysdate, 'DD/MM/YY')

 

일 / 월 / 년  올림  (참고, 절사일 경우는 TRUNCATE 로 하면 된다.)

 

12시 이후면 올림 :  SELECT ROUND(SYSDATE, 'DAY') FROM DUAL ;

 

15일 이후면 올림 :  SELECT ROUND(SYSDATE, 'MONTH') FROM DUAL ;

 

6월 이후면 올림  :  SELECT ROUND(SYSDATE, 'YEAR') FROM DUAL ;

 

기타

 

요일 구하기  :  SELECT LAST_DAY(DATE) FROM DUAL ;

 


 

☞ 시한편

 

(12) 기타

메쏘드명          설명
========================
daysBetween    날짜간 일수구하기
addDays        일수 더하기
whichDay       요일구하기
monthsBetween  날짜간 월수구하기
addMonths      월수 더하기
lastDayOfMonth 그 달의 마지막날짜 구하기
addYears       년수 더하기

 

 

'(DB) Oracle > 함수' 카테고리의 다른 글

Oracle - 날짜_Interval  (0) 2017.01.18
Oracle - Datetime 함수 목록  (0) 2017.01.18
Oracle - 분석용 함수  (0) 2017.01.18
Oracle - 기타 함수  (0) 2017.01.18
Oracle - 그룹 함수  (0) 2017.01.18
Posted by 농부지기
,