2015년 9월 23일 수요일

ORACLE의 DATE TYPE

ORACLE의 DATE TYPE의 크기는 7BYTE라고 한다.
그런데 SELECT LENGTH(HIRE_DATE), LENGTH(SYSDATE) FROM OE.EMPLOYEES WHERE ROWNUM <= 2; 하면 결과는? 8로 나온다.

SELECT DUMP(hire_date, 10), hire_date, DUMP(SYSDATE, 10), SYSDATE
  FROM OE.EMPLOYEES
 WHERE ROWNUM <= 2;

Typ=12 Len=7: 120,107,6,21,1,1,1 2007-06-21 Typ=13 Len=8: 223,7,4,3,10,52,5,0 2015-04-03 10:52:05
Typ=12 Len=7: 120,107,6,21,1,1,1 2007-06-21 Typ=13 Len=8: 223,7,4,3,10,52,5,0 2015-04-03 10:52:05

위 같이 나온다. SYSDATE와 TABLE의 COLUMN 크기가 다르다. 8과 7로 나온다.
SYSDATE 맨 마지막 BYTE 사용하지 않는다고 나온다.

DUMP를 보면 hire_date(TABLE COLUMN)의 경우 120,107이라 나오는데 앞 1을 뺀 20+07해서
2007이고 다음 월,일 시각,분,초 일건데 DEFAULT 값이 1이다 실제는 0으로 표시 된다.
SYSDATE 경우 223, 7 인데 256*7=1792 1792+223=2015가 된다. 즉 2 BYTE는 256의 배수이고 1번째 BYTE 수를 더하면 해당 년도가 나온다. 그 다음은 월,일,시각,분,초 순이다. 제일 마지막의 8BYTE는 사용하지 않는다고 한다.

참고 바랍니다. 

댓글 없음:

댓글 쓰기