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

时间:2024-03-29 14:43:08

最近一次项目中获取数据库中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 ssm获取oracle数据库中DATA类型字段时分秒为0解决办法


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

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

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



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