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