Hibernate插入Oracle数据库时间丢失时分秒问题解决

7 篇文章 0 订阅
3 篇文章 0 订阅

        在公司项目开发过程中,发现Hibernate框架在插入时间进入oracle数据库时丢失了时分秒,在debug时,看java代码上时间是有时分秒的,但再看数据库就莫名其妙的丢失了,郁闷了好久,现在和大家分享也顺便记录一下这个问题当时解决的办法:


       分析

   1,java里使用的Date类型是java.util.Date,而数据库识别的是java.sql.Date,在数据库识别时转换丢掉原类型的时分秒,因为java.sql.Date只有日期没有时分秒,java.sql.Time只有时分秒没有日期,因此我们最终选择了其子类java.sql.Timestamp作为时间类型,既有日期又有时分秒

(PS:  java.util.Date和java.sql.Date可以互转,具体可参考java API)


 2,当我们只改了java代码里的日期类型时,发现还是不行,后来发现,数据库表字段的类型也有影响,原先使用的是DATE,后来把字段类型改为DATETIME就完美的解决了java与数据库时间类型的匹配

  让我看一下oracle的DATE与DATETIME的区别就能明白了:


date datetime区别如下:
(1)格式不同:
date :表示年月日,如YY-MM-DD
datetime: 表示年月日和时间信息,如YY-MM-DD HH:MM:SS

(2)时间范围不同如下:
date -- > '1000-01-01' to '9999-12-31'.
datetime --> '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.


    解决方案

  从上面分析可知,解决的方面有两个(当然可能只适合部分这样问题,具体问题还得具体分析):

1,将java代码里的日期类型换成java.sql.Timestamp

2,将数据库表字段类型换为DATETIME

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值