oracle10g获取Date类型字段无时分秒解决办法!
2014-05-06 17:11
260 查看
一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期、时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别。
最近使用 ORACLE 10G,时间字段因需求,设为了DATE类型,发现hibernate用native SQL 查询或ibatis获取result.getObject()的时候显示不了时分秒,原来是JDBC驱动自动把date映射为 java.sql.date,故截断了时分秒信息,如果你使用9i或者11g 的驱动程序,就没有该问题,但是Oracle10g的JDBC驱动,你会发现没有时分秒
,在Oracle9.2之后,引入了内置数据类型TIMESTAMP。之所以引入它,是因为内置数据类型DATE的最小单位为秒;DATE的主要问题是它粒度不能足够区别出两个事件哪个先发生。9.2版本后ORACLE在DATE数据类型上扩展出来了TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒(纳秒Nanoseconds级的)的信息。如果你想把DATE类型转换成TIMESTAMP类型,就使用CAST函数。 也正是从oracle 9.2开始,内置数据类型DATE和TIMESTAMP在使用9i的JDBC驱动做查询时,DATE被映射为java.sql.Date,TIMESTAMP被映射为java.sql.Timestamp。 从Oracle11开始,其JDBC驱动程序又重新开始回归为将内置类型DATE映射为java.sql.Timestamp(正如9.2之前的那样)。
所以,时分秒精度的丢失与hibernate无关,是oracle jdbc驱动的问题。最好的解决办法就是:
【1】换驱动。经测试,将最开始使用的10g的驱动ojdbc14.jar换为11g的驱动ojdbc5.jar后;
1.1:分别换应用WEB-INFO/lib目录下和Build Path引用。
1.2:如果是部署服务器应用还应当把was的配置改成ojdbc5.jar,具体截图如下:
PS:${ORACLE_JDBC_DRIVER_PATH}路径指向在was-环境-websphere变量处可以看到具体服务器配置路径;
【2】数据库中把
date 设为 timestamp 类型。
最近使用 ORACLE 10G,时间字段因需求,设为了DATE类型,发现hibernate用native SQL 查询或ibatis获取result.getObject()的时候显示不了时分秒,原来是JDBC驱动自动把date映射为 java.sql.date,故截断了时分秒信息,如果你使用9i或者11g 的驱动程序,就没有该问题,但是Oracle10g的JDBC驱动,你会发现没有时分秒
,在Oracle9.2之后,引入了内置数据类型TIMESTAMP。之所以引入它,是因为内置数据类型DATE的最小单位为秒;DATE的主要问题是它粒度不能足够区别出两个事件哪个先发生。9.2版本后ORACLE在DATE数据类型上扩展出来了TIMESTAMP数据类型,它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒(纳秒Nanoseconds级的)的信息。如果你想把DATE类型转换成TIMESTAMP类型,就使用CAST函数。 也正是从oracle 9.2开始,内置数据类型DATE和TIMESTAMP在使用9i的JDBC驱动做查询时,DATE被映射为java.sql.Date,TIMESTAMP被映射为java.sql.Timestamp。 从Oracle11开始,其JDBC驱动程序又重新开始回归为将内置类型DATE映射为java.sql.Timestamp(正如9.2之前的那样)。
所以,时分秒精度的丢失与hibernate无关,是oracle jdbc驱动的问题。最好的解决办法就是:
【1】换驱动。经测试,将最开始使用的10g的驱动ojdbc14.jar换为11g的驱动ojdbc5.jar后;
1.1:分别换应用WEB-INFO/lib目录下和Build Path引用。
1.2:如果是部署服务器应用还应当把was的配置改成ojdbc5.jar,具体截图如下:
PS:${ORACLE_JDBC_DRIVER_PATH}路径指向在was-环境-websphere变量处可以看到具体服务器配置路径;
【2】数据库中把
date 设为 timestamp 类型。
相关文章推荐
- oracle10g获取Date类型字段无时分秒解决办法!
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- oracle获取Date类型字段无时分秒Data和Timestamp比较
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
- 存入数据库的Date类型只有年月日,没有时分秒的原因和解决办法
- Oracle Date类型字段使用Hibernate插入后没有时分秒的解决
- springbatch 读取csv文件时 文件中有字符串需要转换为Date类型的字段报错字符串不能转化为Date类型的解决方法
- SQL Server 2005 不支持"date"数据类型的解决办法
- 使用SQL Sever版本不支持数据类型“date”的解决办法
- Oracle10g JDBC ojdbc14 DATE类型hibernate查询时分秒问题
- 关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
- JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
- J2EE项目中用使用Date类型不显示时分秒的解决方法
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- 关于java获取Oracle中date类型字段问题
- hibernate 数据库类型 date没有时分秒解决
- java怎么获取从oracle数据库拿到的数据的某个字段的字段详情(字段类型如date、varchar2等,长度,精度)?
- excel导入sql数据,数字类型字段变科学计数的简单解决办法