博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle10g获得Date类型字段无分,秒的解决方案!
阅读量:7144 次
发布时间:2019-06-28

本文共 1031 字,大约阅读时间需要 3 分钟。

一般的数据库中,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 种类。

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

你可能感兴趣的文章
理解Lucene/Solr的缓存
查看>>
WINDOWS 7 : SYSPREP 3.14 : A FATAL ERROR HAS OCCURRED DURING SYSPREP.(ZZ)
查看>>
[PHP] 日期与时间
查看>>
【斗医】【11】Web应用开发20天
查看>>
AgileEAS.NET平台开发实例-药店系统-功能发布[权限配置][下]
查看>>
部署DNS服务器之主要区域
查看>>
SCCM Status Messages Stopped Processing
查看>>
某企业信息建设之利用组策略禁止客户端关机
查看>>
RabbitMQ实例教程:路由选择
查看>>
Gitlab的管理使用手册
查看>>
理解并取证:DHCP的工作原理、怎么检测IP地址冲突
查看>>
实战:使用终端服务网关访问终端服务
查看>>
SQL Server 备份与恢复之六:介质集与备份集
查看>>
SystemCenter2012SP1实践(30)P2V,从物理机迁移到虚拟机
查看>>
Graph Search就是语义搜索
查看>>
Windows Server 2012 R2 WSUS-8:配置自动审批规则
查看>>
几个基础的社交网络理论
查看>>
如何安装并使用Windows 8 Client Hyper-V
查看>>
IT人在美国-从服务行业的情况初窥软件产业
查看>>
cocos2d-x 2.X for Android中需要使用OpenGL ES 2.0
查看>>