[20150414]oracle日期存儲.txt
--以前自己沒有注意的問題,自己學習看看.
SCOTT@test> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.3.0 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SCOTT@test> select dump(hiredate) c40 ,hiredate,dump(sysdate) c40,sysdate from emp where rownum=1;
C40 HIREDATE C40 SYSDATE
---------------------------------------- ------------------- ---------------------------------------- -------------------
Typ=12 Len=7: 119,180,12,17,1,1,1 1980-12-17 00:00:00 Typ=13 Len=8: 223,7,4,14,9,28,52,0 2015-04-14 09:28:52
--可以發現SQL語句中對SYSDATE,以及dump表中的日期型不一樣.
--dump(sysdate)可以類型Typ=13 Len=8.後面多了一個0,月日時分秒保持一緻.年
SCOTT@test> @10to16 2015
10 to 16 HEX REVERSE16
-------------- ------------------
00000000007df 0xdf070000
SCOTT@test> @16to10 df
16 to 10 DEC
------------
223
--可以年轉換成16進制,小頭在前,大頭在後.
SCOTT@test> select 7*256+223 from dual ;
7*256+223
----------
2015
--而儲存在資料塊的日期類型是Typ=12 Len=7.
--儲存在資料塊的時分秒存在0的情況,基本為了回避都是在原來的基礎上加1.
--而月日不存在0的情況,保持不動.
--而年月仔細檢視可以看出是原來的基礎上加100.
--至于公元前的日期很少用,不在探究了.
--我參考了連結:
<a href="http://blog.itpub.net/4227/viewspace-68517/">http://blog.itpub.net/4227/viewspace-68517/</a>
<a href="http://blog.itpub.net/4227/viewspace-68514/">http://blog.itpub.net/4227/viewspace-68514/</a>