[Oracle] 날짜형 데이터 & 함수
오라클에서 사용되는 날짜형 데이터
데이터유형 |
설명 |
길이 |
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