Java项目中 mysql 保存Date时日期毫秒数精度丢失问题

前言

记录Java保存Date类型字段到Mysql时毫秒数精度丢失问题。

问题描述

基于Java的项目中,保存Date类型字段到Mysql数据库时,毫秒数的精度丢失,保存的.000,没有保存具体的毫秒数。

原因分析

网上查了相关资料并测试发现,是项目中 mysql-connector-java 包的版本问题,小于等于 5.1.22 版本的在保存的时候会按 yyyy-MM-dd HH:mm:ss 再格式化一次,从而导致丢失毫秒数。

以下是 5.1.21 版本部分源码截图:
感兴趣的可以自己翻看源码看看,com.mysql.jdbc.PreparedStatement 类下的 private void setTimestampInternal(...) 方法
在这里插入图片描述

解决方法

将 mysql-connector-java 包的版本升级的 5.1.22 以上即可。
PS:mysql 表中对应的时间字段类型为 Timestamp 且长度设置为 3。)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值