java ssm获取oracle数据库中DATA类型字段时分秒为0解决办法

在项目中遇到Oracle数据库DATE类型字段显示时分秒为0的问题。问题源于Oracle不同版本JDBC驱动对DATE类型的处理。解决方案包括更换JDBC驱动或将DATE转换为TIMESTAMP。本文提供了一种明确的方法:在Mapper中将DATE字段类型改为TIMESTAMP,并在实体类中使用java.sql.Timestamp类型,经过测试证实有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一次项目中获取数据库中DATA类型字段 时分秒为0.  例如:2018-03-23 0:00:00:

  一般的数据库中,DDATE数据类型是包括日期、时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别。 根据 多方查证表明:           在Oracle9.2之后,引入了内置数据类型TIMESTAMP。之所以引入它,是因为内置数据类型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、换jdbc驱动(没有下载版本描述等)

2、数据库中把data转换成timestamp类型(一般来说不修改数据库中字段类型)

下面是我的解决办法:

第一步:更换mapper中获取date类型字段类型为:TIMESTAMP

如图所示:


第二步:更换解析实体类字段类型:java中Date类型有:java.util.Date    java.sql.Date 两种 。在这里我们都不用,看清楚了我们都不用

在这里我们使用:java.sql.Timestamp类型:  如图所示:




亲测可用啊,我已经使用了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值