MySQL中datetime时间字段的四舍五入操作
目录
- 前言
- 1、背景
- 2、模拟测试
- 3、结论
- 总结
前言
【MySQL中datetime时间字段的四舍五入操作】如果不是踩到坑,我估计到现在还不知道时间字段会四舍五入。
1、背景
通过 Java 代码获取当日最大时间,然后存入数据库,数据库表字段格式 datetime 保留 0 位。
now.with(LocalTime.MAX)
小小的一行代码,获取今天的最大日期。
到数据库一看,好家伙,竟然存了第二天的时间。
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/ea344e54e538404ca12ce5ad55d1f318.jpg)
文章图片
看着样子是四舍五入了!
2、模拟测试
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/a1031544e99a47628d308309b87945d8.jpg)
文章图片
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/6e048fc4170a4b24a890d18a07f2e967.jpg)
文章图片
执行之后,看一下日志:
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/61ab12d8a3db4c129ee2dfe1a761f161.jpg)
文章图片
使用的是 2021-09-28T23:59:59.999999999,但是很奇怪的是数据库存储的是 2021-09-29 00:00:00。
直接使用 SQL 试一试:
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/3fc72c5863ef48ed9e0838b6fdbaba09.jpg)
文章图片
这…… 果然是四舍五入了。
换成 MariaDB 试试!
docker pull mariadbdocker run -d --name mariadb -p 33306:33306 -e "MYSQL_ROOT_PASSWORD=root" mariadbdocker exec -it mariadb bash
![MySQL中datetime时间字段的四舍五入操作](https://img.it610.com/image/info11/a82fdcf0f24f4a8d954af388bde6f0d9.jpg)
文章图片
MariaDB 是直接舍弃多余位数的!
3、结论
MySQL 时间如果传入的值超过精度范围,会进行四舍五入。
MariaDB 时间如果传入的值超过精度范围,会直接舍弃。
踩了个小坑。最后还是硬编码吧!
now.with(LocalTime.parse("23:59:59"))
总结 到此这篇关于MySQL中datetime时间字段的四舍五入的文章就介绍到这了,更多相关MySQL datetime四舍五入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理