前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL datetime 时间字段的四舍五入

MySQL datetime 时间字段的四舍五入

作者头像
程序员小航
发布2021-10-13 14:33:26
1.8K0
发布2021-10-13 14:33:26
举报
文章被收录于专栏:程序员小航程序员小航
前言

如果不是踩到坑,我估计到现在还不知道时间字段会四舍五入。

1

背景

通过 Java 代码获取当日最大时间,然后存入数据库,数据库表字段格式 datetime 保留 0 位。

代码语言:javascript
复制
now.with(LocalTime.MAX)

小小的一行代码,获取今天的最大日期。

到数据库一看,好家伙,竟然存了第二天的时间。

看着样子是四舍五入了!

2

模拟测试

执行之后,看一下日志:

使用的是 2021-09-28T23:59:59.999999999,但是很奇怪的是数据库存储的是 2021-09-29 00:00:00

直接使用 SQL 试一试:

这…… 果然是四舍五入了。

换成 MariaDB 试试!

docker pull mariadb docker run -d --name mariadb -p 33306:33306 -e "MYSQL_ROOT_PASSWORD=root" mariadb docker exec -it mariadb bash

MariaDB 是直接舍弃多余位数的!

3

结论

MySQL 时间如果传入的值超过精度范围,会进行四舍五入。

MariaDB 时间如果传入的值超过精度范围,会直接舍弃。

踩了个小坑。最后还是硬编码吧!

代码语言:javascript
复制
now.with(LocalTime.parse("23:59:59"))

- <End /> -


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小航 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1
    • 背景
    • 2
      • 模拟测试
        • 换成 MariaDB 试试!
    • 3
      • 结论
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档