Oracle9或11使用了Oracle10的驱动引起的时间丢失
2011-04-18 23:23
513 查看
Oracle中在DDL的时候,列类型date是包括时间+时间的,并且精确到毫秒. 不存在仅仅是日期(不包括时间)的列类型,而列类型timestamp可以认为是精度更高的date类型,能精确到纳秒(在windows操作系统只能精确到1000纳秒)。
Java中的Date类有二种,一种是带时间的java.util.Date,一种是不带时间仅有日期的java.sql.Date.还有一种是既带时间又带日期的java.sql.Timestamp.
一.java写oracle
1.java写入oracle的date列时:
java.util.Date,java.sql.Timestamp二种类型不仅会写入日期还会写入时间.
java.sql.Date,Oracle只会写入日志,时间部分会使用默认的00:00:00来存储.
2.java写入oracle的timestamp列时:
应该使用java.sql.Timestamp
二.oracle读到java
1.如果是date类型的列(比较麻烦,如果使用了现有的驱动ojdbc14, 在将date类型转换成java的date类时,会使用java.util.Date的继承类java.sql.Date,而不是java.util.Date,由于前者不会保留时间部分,只有日期.导致查询出来的时间部分丢失.)
java如果使用了错误的驱动,有三种解决办法:
1)解决的办法: (1).将date类型改为timestamp类型(不推荐使用). (2).在datasource的连接参数里设置oracle.jdbc.V8Compatible=true;(兼容老的驱动程序,由于老的驱动是正确转换的,这样会将date列正确转换成java.util.Date
2)将date列类型转成timestamp类型. Oracle的所有驱动都会将timestamp转换成java.sql.Timestamp. 肯定不会丢失时间部分
参考文章:
http://www.blogjava.net/midea0978/archive/2008/06/13/207655.html
Java中的Date类有二种,一种是带时间的java.util.Date,一种是不带时间仅有日期的java.sql.Date.还有一种是既带时间又带日期的java.sql.Timestamp.
一.java写oracle
1.java写入oracle的date列时:
java.util.Date,java.sql.Timestamp二种类型不仅会写入日期还会写入时间.
java.sql.Date,Oracle只会写入日志,时间部分会使用默认的00:00:00来存储.
2.java写入oracle的timestamp列时:
应该使用java.sql.Timestamp
二.oracle读到java
1.如果是date类型的列(比较麻烦,如果使用了现有的驱动ojdbc14, 在将date类型转换成java的date类时,会使用java.util.Date的继承类java.sql.Date,而不是java.util.Date,由于前者不会保留时间部分,只有日期.导致查询出来的时间部分丢失.)
java如果使用了错误的驱动,有三种解决办法:
1)解决的办法: (1).将date类型改为timestamp类型(不推荐使用). (2).在datasource的连接参数里设置oracle.jdbc.V8Compatible=true;(兼容老的驱动程序,由于老的驱动是正确转换的,这样会将date列正确转换成java.util.Date
2)将date列类型转成timestamp类型. Oracle的所有驱动都会将timestamp转换成java.sql.Timestamp. 肯定不会丢失时间部分
参考文章:
http://www.blogjava.net/midea0978/archive/2008/06/13/207655.html
相关文章推荐
- Oracle9或11使用了Oracle10的驱动引起的时间丢失
- .Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解
- struts2_day02_09-属性封装操作_10-模型驱动封装操作_11-使用属性封装和模型驱动封装注意问题
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- Oracle使用rman进行表空间基于时间点的恢复
- 使用touch命令改变文件修改时间--用Enki学Linux系列(11)
- Oracle EnterpriseManager 10 Database Control 不能使用,提示:可访问性模式禁用。
- update 语句的特殊使用,oracle时间列加一天,加一小时,加一分钟
- Fedora 10/11下解决不能使用root用户登录系统
- 使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库
- Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10] 错误
- 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
- [java转]Oracle JDBC驱动与时间不见了的问题
- 同时安装oracle9 i,10 g 控制台 cmd,exp指令使用数据库版本切换,plsql数据库版本切换,
- 使用instantclient_11_2和pl/sql Developer连接oracle远程数据库
- 关于读取Oracle数据时间丢失问题
- ORACLE时间日期格式使用总结(参考网上资料汇总)
- 时间同步引起的oracle故障
- 在Maven仓库中添加Oracle JDBC驱动(原出处有些问题,进行更正:版本对应问题,如使用oci连接方式更要注意版本对应关系)
- 10.字符设备驱动模型(1)-使用字符驱动程序