데이터베이스/Oracle

[Oracle] 날짜형 데이터 & 함수

오픈이지 2013. 5. 16. 11:40

오라클에서 사용되는 날짜형 데이터


 

 

  데이터유형 

   설명

   길이

 DATE

 고정길이의 날짜와 시간데이터

 BC 4712년 1월1일부터 9999년

 12월31일까지 표현

 7바이트

 표현형식: NLS_DATE_FORMAT

               파라미터에 명시된 값 

 INTERVAL YEAR [(yr_pec)]

 TO MONTH

 년도와 월형태로 기간을 표시한다.

 yr_prec는 날짜의 연도의 최대 자리수

 범위: 0~9  디폴트값: 2

 5바이트

 INTERVAL DAY [(day_prec)]

 TO SECOND [(frac_sec_prec)]

 요일, 시, 분, 초 형태로 기간을 표시한다.

 디폴트 자릿수: day_prec:2

                      frac_sec_prec: 6

 11바이트

 TIMESTAMP[(frac_sec_prec)]

 밀리초까지 표현가능한 날짜형 데이터타입.

 frac_sec_prec 범위는 0~9, 디폴트:6

 7~11바이트 : precision에따라 가변

 TIMESTAMP[(frac_sec_prec)]

 WITH TIMEZONE

 시간대와 더불어 날짜와 시간을 표현한다.

 13바이트

 TIMESTAMP[(frac_sec_prec)]

 WITH LOCAL TIMEZONE

 TIMESTAMP WITH TIMEZONE과 비슷하나  

 저장시에는 데이터베이스의 시간대를 준수

 조회시에는 클라이언트의 시간대를 준수

 7~11바이트: precision에따라 가변

 

DATE사용예


 

SQL> CREATE TABLE test1 (

         date1 DATE);

 

SQL> INSERT INTO test1 (date1) VALUES( SYSDATE );

 

SQL> SELECT * FROM test1;

DATE1

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

05/15/13

 

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

SQL> SELECT * FROM test1;

DATE1

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

2013-05-15

 

 

날짜형 함수 사용예


1. 현재날짜를 반환하는 함수

 

SQL> SELECT CURRENT_DATE, SYSDATE FROM DUAL;

CURRENT_DATE           SYSDATE

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

05/15/13                      05/15/13           

 

2. 날짜형 데이터로 형변환하는 함수 TO_DATE(char, fmt)

 

파라미터로 들어오는 CHAR, VARCHAR2, NCHAR,NVARCHAR2타입의 ㄷ이터를 DATE 타입으로 변환한 결과를 반환하는 함수이다.

 

SQL> SELECT TO_DATE('2013-05-10 10:00:00','YYYY-MM-DD HH24:MI:SS') date1 FROM  DUAL;      

 

3. 날짜령 데이터를 문자형 데이터로 형변환하는 함수 TO_CHAR(datetime)

 

DATE,TIMESTAMP,TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE 등 날짜형 데이터 타입을 VARCHAR2 타입으로 변환하여 그 결과를 반환한다.

 

SQL> INSERT INTO test1(date1) VALUES( TO_DATE('2013-05-10'));

SQL> SELECT TO_CHAR(date1,'YYYY-MM-DD') data_format1 FROM test1;

DATE_FORMAT1

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

2013-05-10