[20150414]oracle日期儲存.txt

lfree發表於2015-04-14

[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.

--至於公元前的日期很少用,不在探究了.
--我參考了連結:

http://blog.itpub.net/4227/viewspace-68517/
http://blog.itpub.net/4227/viewspace-68514/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1574402/,如需轉載,請註明出處,否則將追究法律責任。

相關文章