SQL> col dump_date form. a35
SQL> col real_date form. a35
SQL> select dump(sysdate) dump_date,
2 to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') real_date
3 from dual
4 where rownum=1;
DUMP_DATE REAL_DATE
----------------------------------- -----------------------------------
Typ=13 Len=8: 220,7,3,18,15,8,54,0 2012-03-18 15:08:54
日期在内存中的保存形式:
长度:8字节 1-2: year 3:month 4 :day 5:hour 6:minute 7:second 8:
由于是LITTLE ENDIAN,所以220,7表示7,220,转化为0x7DC,即2012
后面的月日时分秒等都是以与实际值相同的形式保存的。
上面说的是日期在内存中的保存格式,下面看下日期在文件中的保存格式:
SQL> create table d (a date);
表已创建。
SQL> insert into d values(sysdate);
已创建 1 行。
SQL> commit
2 ;
提交完成。
SQL> col dump_date form. a35
SQL> col real_date form. a35
SQL> select dump(a) dump_date,
2 to_char(a,'yyyy-mm-dd hh24:mi:ss') real_date
3 from d
4 where rownum=1;
DUMP_DATE REAL_DATE
----------------------------------- -----------------------------------
Typ=12 Len=7: 120,112,3,18,16,10,59 2012-03-18 15:09:58
长度为7。
120-100=20 --年份前2位(20**年)
112-100=12 --年份后2位(**12年) 这2个BYTE长度的值合起来就表示2012年
3 --月
18 --日
16-1=15 --时
10-1=9 --分
59-1=59 --秒
参考:DSI302(对ORACLE中各类型在数据库中的存储格式做了详细的说明)
参考:http://www.itpub.net/thread-211094-1-1.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23132642/viewspace-718872/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23132642/viewspace-718872/
本文详细解析了SQL中日期在内存和文件中的存储格式,包括日期的长度、具体存储方式及转换过程。
1072

被折叠的 条评论
为什么被折叠?



