一般的数据库中,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:假设是部署server应用还应当把was的配置改成ojdbc5.jar,详细截图例如以下:

PS:${ORACLE_JDBC_DRIVER_PATH}路径指向在was-环境-websphere变量处能够看到详细server配置路径。

【2】数据库中把
date 设为 timestamp 种类。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

oracle10g获得Date类型字段无分,秒的解决方案!的更多相关文章

  1. oracle10g获取Date类型字段无时分秒解决办法!

    一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期.时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别. 最近使用 ...

  2. ORACLE中date类型字段的处理

    (1)在英文版本的ORACLE中默认日期格式为'DD-MON-YY',例如'01-JAN-98' 在汉化的中文版本中ORACLE默认日期格式为'日-月-年',例如'21-8月-2003'或'21-8月 ...

  3. 【java】jackson 中JsonFormat date类型字段的使用

    为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...

  4. ORACLE插入DATE类型字段

    1 怎样在ORACLE中输入DATE类型的字段 insert into table_name (date_column) values(to_date('2006-06-04','yyyy-mm-dd ...

  5. jackson 中JsonFormat date类型字段的使用

    为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...

  6. 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题

    今天在做项目过程中,查询一个表中数据时总碰到这个问题:      java.sql.SQLException:Value '0000-00-00' can not be represented as ...

  7. 从Date类型字段获得当日周几的DAYNAME函数

    例: select dayname(date) from pos.daywork

  8. java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法

    当取出这个值的时候只能用java.sql.Date而且只能显示年月日,我想知道如何才能显示时分秒   PS:不改变用getdate()存入的前提下! 解决方法:将getDate()方法改为getTim ...

  9. yii2:oracle date类型字段的写入或查询

    insert: insert into tabname(datecol) value(sysdate) ; -- 用date值 insert into tabname(datecol) value(s ...

随机推荐

  1. Phoenix Framework对于Tree该方法节点设置不同的图标,每个

    在包Javax Swing的Tree对象.我们需要设置不同的图标为每个节点.它封装了一个通用的方法: 用法: jTree1.setCellRenderer(new TreeNodeRender(cas ...

  2. swift笔记 (三) —— 字符和字符串

    字符串和字符 苹果要是不提供了unicode的字符串和字符,那就是他们公司全部人的脑袋都被门夹过 他自己家都要发非常多国家的版本号的软件,怎么可能不用unicode呢 此处略去30字... 这里能够拿 ...

  3. Docker创建支持ssh服务的容器和镜像

    原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...

  4. Windows8.1硬盘安装Ubuntu14.04双系统参考教程和多硬盘的注意事项[画画]

    硬盘安装.无需光盘.U盘:Win8.1为主,Ubuntu14.04为辅,可将Windows或Ubuntu设置为开机默认启动项.在Ubuntu下可查看.操作Windows系统下的文件:适用于安装和14. ...

  5. bootstrap的popover在trigger设置为hover时不隐藏popover

    使用bootstrap的popover,trigger设置为hover时,可以实现当鼠标放置到目标元素上时显示popover,可是无法实现当鼠标移动到popover上时不隐藏popover,在网上找了 ...

  6. hdu3530Subsequence rmq

    //使用rmq办,ma[i][j],同i作为一个起点2^j阵列的最大长度值 //启动枚举问最长的子列 //枚举的最大长度2^(j-1)和2^(j)z之间 //然后在该范围内找到 #include< ...

  7. Replace是替代 Split分割字符串

    Replace是替代 Split分割字符串string[] ReadText = str.Replace("\r\n", "@").Split('@'); Sp ...

  8. java反编译

    反编译工具下载地址 http://download.csdn.net/detail/u011110110/8621653 反编译方法: 第一步:你先把下载的包的后缀名改成.zip第二步:到网上搜索de ...

  9. Zygote过程【3】——SystemServer诞生

    欢迎转载.转载请注明:http://blog.csdn.net/zhgxhuaa 在ZygoteInit的main()方法中做了几件大事.当中一件便是启动Systemserver进程.代码例如以下: ...

  10. OTN&互换amp; P-OTN有效降低100G 网络成本 (两)

    OTN互换& P-OTN有效降低100G 网络成本 (两) 在全球范围内.网流量的增长速度是空前的,导致此现象的缘由包含云服务的增长.移动宽带和基于互联网的视频点播服务的增长. Cisco估计 ...