网站首页 > java教程 正文
现象:mysql表有个时间类型字段,当往里写入由代码传进来的值为“2020-11-10 23:59:59.790”时,数据库字段存储的值却变成了“2020-11-11 00:00:00.000”,很奇怪,于是搜寻了一翻;
解释:mysql版本5.6.4 之后 , 新增了一个叫factional seconds的特性 , 可以记录时间的毫秒值,产生一个java中时间的Milliseconds超过500就会四舍五入的问题,于是又试了下,确实如此,写入“2020-11-10 23:59:59.499”时,数据库存储值也是一样,当写入“2020-11-10 23:59:59.500”时就进位了;
解法:
1、可以把字段精度设置大一些,datetime 和 timestamp 定义时是可以带精度的,精度值为 0~6,表示保留几位小数,默认值为 0。显然保留 3 位可看作精度为毫秒,保留 6 位可看作精度为微秒;
2、写入db前把毫秒改成500以下;
3、如果进位对于业务无任何影响也可以不关注
猜你喜欢
- 2024-09-16 Java程序员们请你不要用战术上的勤奋掩盖你自己站略上的懒惰
- 2024-09-16 Java中存储金额用什么数据类型?(java用什么数据类型表示金额)
- 2024-09-16 java 坐标类_java实现坐标(java中坐标)
- 2024-09-16 MySQL常用函数,程序员真得看看(mysql函数用法)
- 2024-09-16 Java中Double保留后小数位的几种方法
- 2024-09-16 Java面试官问我10道题,我答错了一半,你能答对多少?
- 2024-09-16 java.util.Math类--数学相关的工具类
- 2024-09-16 怎么让四舍五入都不亏?(怎么四舍五入到个位)
- 2024-09-16 一张图彻底搞懂Java取整函数ceil、floor、round的区别!建议收藏
- 2024-09-16 Java中的金额处理的精度问题(java金额比较大小方法)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)