오라클에서 초단위 이하의 밀리세컨드 처리를 위해선 TIMESTAMP형을 사용해야 한다.
9i에서 추가된것 같다.
주로사용하는 DATE형은 초까지의 정보만 입력된다.
문자열의 날짜입력시
DATE형은
insert into TABLE_NAME (COL_NAME) values (to_date('20100723152301', 'YYYYMMDDHH24MISS'));
TIMESTAMP형은
insert into TABLE_NAME (COL_NAME) values (to_timestamp('20100723152301123', 'YYYYMMDDHH24MISSFF'));
-> 밀리세컨드를 3자리로 지정하여 표현하고 싶다면 FF3을, 4자리로 표현하고 싶다면 FF5를, 이와 같은 형식으로 바꾸어주면 된다.
포맷팅 해서 소숫점단위의 초를 보려면 FF 엘리먼트를 사용한다. TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH:MM:SS.FF4')
ex) select to_char(COL_NAME, 'YYYY-MM-DD HH:MM:SS.FF4') temp_date from TABLE_NAME;
현재시간 입력시
DATE형은 SYSDATE를
TIMESTAMP는 SYSTIMESTAMP를 사용하면 된다.
이 Timestamp 타입의 문제는 연산하기가 만만치 않다는 겁니다. 보통 Date 타입에서는 초단위까지 더하거나 뺄 때 sysdate + 1/24/60/60 까지 가능한데, Timestamp 타입은 초단위 까지는 이런 방식대로 가능한데, 이런 식으로 밀리초를 계산할 수가 없습니다. 따로 INTERVAL 이라는 키워드를 이용해서 하는데, 예를 들어 이런 식이져...
SELECT TO_CHAR(SYSTIMESTAMP, 'MI.SS.FF4')
, TO_CHAR(SYSTIMESTAMP + INTERVAL '0 01:01:01.0100' DAY TO SECOND, 'MI.SS.FF4') from dual;
'프로그래밍 > Database' 카테고리의 다른 글
[Oracle] 중복데이터 체크 (0) | 2010.07.23 |
---|---|
DB에서 Null체크 (0) | 2010.05.20 |
[Oracle] Process수 늘리기(동시접속) (0) | 2010.05.12 |
ERWin-ERD (0) | 2010.03.23 |
[Oracle] 사용자 추가 (0) | 2010.03.11 |