网上看了篇文章
<======================================================
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以上
<======================================================
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以上
解决方案 »
- delete表时出现ORA-00903
- Oracle查询语句求助
- 在本地计算机无法启动OracleOraDb10g_home1iSQL*Plus服务。求解
- OracleDBConsoleorcl无法启动 错误997 重叠i/o操作在进行中
- 用ORACLE如何做 一个类似用友财务的余额表?就是最后一列余额显示让 期初余额 +借方-贷方
- oracle中文乱码疑问。。
- 关于JAVA调用ORACLE存储过程的字符集问题
- 请教:ORACLE如何用EXP命令快速导出110G的数据
- 一个oracle查询的sql语句的写法,给出正确答案者另给100分
- 使用JDBC如何解决Oracle数据库断连重连。
- linux上oracle10.2.0安装问题(非常感谢大家帮忙)
- 两个oracle数据库,如何实现表的同步?
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个字节保存。