网上看了篇文章
<======================================================
select to_char(col_time, ''syyyy-mm-dd hh24:mi:ss.ff9'') time, dump(col_time) dump_time
2 from test_time;
time dump_time
------------------------------ ----------------------------------------------------
0001-01-01 00:00:00.000000000 typ=180 len=7: 100,101,1,1,1,1,1
2000-01-01 00:00:00.000000000 typ=180 len=7: 120,100,1,1,1,1,1
9999-12-31 23:59:59.999999000 typ=180 len=11: 199,199,12,31,24,60,60,59,154,198,24
-0001-01-01 00:00:00.000000000 typ=180 len=7: 100,99,1,1,1,1,1
-0100-03-04 13:02:03.234015000 typ=180 len=11: 99,100,3,4,14,3,4,13,242,201,24
2004-12-15 16:14:52.738000000 typ=180 len=11: 120,104,12,15,17,15,53,43,252,252,128
2000-01-01 00:00:00.123457000 typ=180 len=11: 120,100,1,1,1,1,1,7,91,205,232
已选择7行。
  与date类型对比可以发现,对于timestamp类型,如果不包含微秒信息或者微秒值为0,那么存储结果和date完全相同。当微秒值为0时,oracle为了节省空间,不会保存微秒信息。
  如果毫秒值不为0,oracle把微秒值当作一个9位数的数字来保存。
比如999999000,保存为59,154,198,24。234015000保存为13,242,201,24。
<===========================================
请问00:00:00.123457000 这部分怎么解释,那部分是豪秒,那些是微妙
还有999999000,保存为59,154,198,24是什么意思啊?999999000不就是999999000吗?怎么会保存成59,154,198,24以上

解决方案 »

  1.   

    0.000 000 001 毫秒 = 1皮秒 
    0.000 001 毫秒 = 1纳秒 
    0.001 毫秒 = 1微秒 
    1000 毫秒 = 1秒 所以 999999000  就是
    999毫秒+999微秒。999999000 保存的时候是二进制的4个字节。你可以用calc (计算器)在十进制输入后999999000 转为16进制 
    ,得到的就是3B9AC618  也就是 59,154,198,24 
    也就是oracle在保存的时候为了节省空间如果毫秒为0 ,采用7个字节保存。否则用11个字节保存。
      

  2.   

    GOOGLE: SYSDATE 时间戳 毫秒