广告
返回顶部
首页 > 资讯 > 数据库 >Mysql DateTime 查询问题解析
  • 935
分享到

Mysql DateTime 查询问题解析

Mysql DateTimeMysql DateTime查询 2022-11-27 11:11:07 935人浏览 八月长安
摘要

目录正文调用System的currentTimeMillis小结查询总结正文 public static final LocalTime MAX; public static final LocalDate

正文

 
 public static final LocalTime MAX;
 
 public static final LocalDateTime MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);

我们可以看到 LocalTime 和 LocalDateTime 的精度是可以去到 9 也就是达到纳秒

但是为什么我们经常打印出来的时候往往只有小数点后三位、也就是毫秒

 LocalDateTime now = LocalDateTime.now();
 System.out.println(now);

调用System的currentTimeMillis

我们看到源码最终还是调用了 System的currentTimeMillis

 @Override
 public long millis() {
     return System.currentTimeMillis();
 }
 @Override
 public Instant instant() {
     return Instant.ofEpochMilli(millis());
 }

最近测试环境中出现了个时间精度的问题、计算某个流程所花费的时间的时候得出了负数、因为存储该字段的类型设置了无符号、导致插入的时候报错、超出该类型的值的范围。

当时的第一反应是流程对应的步骤是不是分别在不同的容器中执行、容器之间是否存在时间差。

后面排查所有的步骤均执行在同一个容器中、日志打印的时间和sql插入的值均没啥差异。select 出来的值没有打印出来。

后面看到其中日志打印insert 的值的秒比数据库中的秒要少一秒。然后发觉没有设置 dateTime 的精度

这个其实是录入表的同事遗漏了、原本设计表结构是有6位精度的(规范要求)。

后面补上精度、顺手将无符号也去掉

Mysql 中的 dateTime 精度默认为 0 、最大可以去到 6。

如果入参的精度大于 dateTime 的精度、那么将会进行四舍五入。

Mysql DateTime 查询问题解析

小结

插入的时候、如果输入的精度比声明的精度高、那么则会对其进行四舍五入

查询

值得注意的是、LocalTime | LocalDateTime 的 MAX 是 9位 的、如果

 drop table MQst1;
 create table mqst1
 (
     id         int      null,
     createtime datetime(0) null
 );
 INSERT INTO test_schema.mqst1 (id, createtime) VALUES (1, '2021-10-01 21:08:08.123');
 INSERT INTO test_schema.mqst1 (id, createtime) VALUES (1, '2021-10-01 23:59:59.567');
 INSERT INTO test_schema.mqst1 (id, createtime) VALUES (2, '2021-10-02 00:00:00.000');
 select *
 from mqst1
 where createtime >= '2021-10-01 00:00:00'  and createtime <= '2021-10-01 23:59:59.999999';
 select *
 from mqst1
 where createtime >= '2021-10-01 00:00:00' and createtime <= '2021-10-01 23:59:59.9999995';

第二条的查询就最后的参数比第一条的时间多了一个 5

首先看插入结果

Mysql DateTime 查询问题解析

那么第一条的查询结果是只有一条

第二条的查询结果却是 3 条。

因为 mysql字符串转换成 dateTime 的时候使用的是 6 位的精度、超过六位的才会四舍五入、所以导致第二条的查询条件变为 10-02 00:00:00

我们将 dateTime 的精度改为 2

 createtime datetime(2) null

Mysql DateTime 查询问题解析

那么第一条的查询结果为两条

而第二条的查询结果还是为三条

即使将精度改为6也是这样的结果

总结

对于查询而已、mysql 会对 string 的转换如果超出 6 位 多出的会进行四舍五入、然后才会去表中进行比较

事实上对于大多数场景而已、Java 提供的毫秒级别的时间以及能满足大多数场景了、对应到 db 存储时间到精度、

建议直接 6 会比较省心点吧、跟 Mysql 做字符串转换 dateTime 的时候一样。

查询到时候需要注意的是如果上限被包含进去、需要考虑精度是否超过 Mysql 的最大精度、如果超过了则可能你会被舍入

 System.out.println(LocalDateTime.of(LocalDate.now(), LocalTime.MAX).withNano(999999000));

以上就是Mysql DateTime查询问题解析的详细内容,更多关于Mysql DateTime的资料请关注我们其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql DateTime 查询问题解析

本文链接: https://www.lsjlt.com/news/173599.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql DateTime 查询问题解析
    目录正文调用System的currentTimeMillis小结查询总结正文 public static final LocalTime MAX; public static final LocalDate...
    99+
    2022-11-27
    Mysql DateTime Mysql DateTime查询
  • MySQL慢查询优化解决问题
    目录1.  MySQL慢查询介绍2.发现问题(主动/被动)3.找到原因-对症下药1.  MySQL慢查询介绍   MySQL的慢查询日志是MySQL提供...
    99+
    2022-11-13
  • MySQL统计信息查询慢问题分析
    起因 在MySQL服务器运行mysqld_exporter后,发现数据库的中活跃连接数暴增,而且都是来自于mysqld_exporter的慢查询,语句如下: SELECT T...
    99+
    2022-10-18
  • MySQL中连接查询和子查询的问题
    目录多表连接的基本语法交叉连接和笛卡尔积现象交叉连接笛卡尔积现象内连接外连接左外连接右外连接全外连接子查询多表连接的基本语法 多表连接,就是将几张表拼接为一张表,然后进行查询 s...
    99+
    2022-11-12
  • MySQL慢查询优化问题-解决办法
    目的 根据发现的问题,找到原因,然后对症下药 借鉴资料: 没用过慢查询日志,别说自己做过数据库优化 慢查询日志概念 记住七个字搞定索引失效问题 发现问题(主动/被动) 问题点:数据库查询过程中速度过慢的SQL语句 主动:数据库默认情况...
    99+
    2019-08-01
    MySQL慢查询优化问题-解决办法
  • 怎么分析Mysql中的嵌套子查询问题
    小编今天带大家了解怎么分析Mysql中的嵌套子查询问题,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“怎么分析Mysql中的嵌套子查询...
    99+
    2023-06-29
  • MySql中的连接查询问题
    目录连接查询连接查询的分类笛卡尔积现象内连接之等值连接内连接之自连接内连接之非等值连接外连接内连接和外连接的特点多表连接总结连接查询 当进行多表连接查询时 需要指定字段所属的表 , 可以提高查询效率 , 如果不指定字段所...
    99+
    2023-03-20
    MySql连接查询 MySql查询 MySql连接查询问题
  • 如何解决mysql大表查询慢的问题
    小编给大家分享一下如何解决mysql大表查询慢的问题,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql大表查询慢的优化方法:1、合理建立索引,通常查询利用到索引比不用索引更快;2、对关键...
    99+
    2022-10-18
  • 怎么解决mysql 查询中文乱码问题
    小编给大家分享一下怎么解决mysql 查询中文乱码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql查询中文乱码的解决办法:1、在安装目录找到my....
    99+
    2022-10-19
  • MySql中的连接查询问题怎么解决
    本文小编为大家详细介绍“MySql中的连接查询问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySql中的连接查询问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。连接查询当进行多表连接查询...
    99+
    2023-07-05
  • mysql的Incorrect datetime value报错问题怎么解决
    这篇文章主要介绍“mysql的Incorrect datetime value报错问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql的Incorr...
    99+
    2022-10-19
  • 解析Mybatis对sql表的一对多查询问题
    Mybatisd对sql表的一对多查询 select * from projectrecord pr left join projects po on po.pid=p...
    99+
    2022-11-13
  • Mysql中的嵌套子查询问题
    目录Mysql嵌套子查询在WHERE子句中使用子查询单行单列子查询单行多列子查询。多行单列子查询FROM子查询:总结:select子查询用子查询用子查询Mysql嵌...
    99+
    2022-11-13
  • mysql之跨库关联查询问题怎么解决
    这篇文章主要介绍了mysql之跨库关联查询问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql之跨库关联查询问题怎么解决文章都会有所收获,下面我们一起来看看吧。1、解决方案mysql是不支持跨库...
    99+
    2023-07-05
  • Mysql如何解决数据库N+1查询问题
    这篇文章主要介绍Mysql如何解决数据库N+1查询问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!简介在orm框架中,比如hibernate和mybatis都可以设置关联对象,比如...
    99+
    2022-10-18
  • 解析MySQL join查询的原理
    MySQL用Nested-Loop Join算法实现join查询 区分驱动表和被驱动表,以驱动表的结果集为循环的基础,访问被驱动表过滤数据,然后合并结果,驱动表在外循环、被驱动表在内...
    99+
    2022-11-13
  • MYSQL的IN查询效率慢的问题
    最近项目的老代码又出问题了,mysql的in查询一次查询了5万个数据,cpu一下飙升到100%,这条查询sql也运行的近600s,那么是什么原因导致mysql的in查询效率如此之低,并且没有走索引呢?...
    99+
    2023-09-10
    mysql 数据库
  • mysql之跨库关联查询(dblink)问题
    目录1、解决方案2、操作1、开启FEDERATED引擎2、建表时加上连接3、缺点总结1、解决方案 mysql是不支持跨库连接的,如果我们实在要连接的话可以用dblink方式。 解释: dblink就是我们在创建表的时候...
    99+
    2023-03-09
    mysql跨库查询 mysql跨库关联查询 mysql关联查询
  • MySQL Threads_running飙升与慢查询的相关问题解决
    背景 年前本应该是回顾一年工作和收尾的阶段,奈何各种促销,活动都等着春节,因此也遇到了不少的问题,回顾了一下最近遇到的问题,发现有好几个问题比较类似,正好整理一下,作为年前收尾的案例吧。表现上都是数据库假死,无响应...
    99+
    2022-05-22
    MySQL Threads_running飙升 MySQL 慢查询
  • 怎么解决MySQL数据库出现慢查询问题
    这篇文章主要讲解了“怎么解决MySQL数据库出现慢查询问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决MySQL数据库出现慢查询问题”吧!1、My...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作