gpt4 book ai didi

mysql不在日期时间中存储微秒,但在where条件下使用?

转载 作者:行者123 更新时间:2023-11-29 17:55:42 25 4
gpt4 key购买 nike

我有这个架构

CREATE TABLE `test` (
`id` int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`dt` datetime NOT NULL
) ENGINE='InnoDB';

INSERT INTO `test` (`dt`) VALUES ('2018-02-19 17:21:51.321343');

为什么此查询没有结果?

从测试中选择*,其中 dt = '2018-02-19 17:21:51.321343';

所以我使用的是日期时间而不是日期时间(6)..微秒部分没有存储,为什么要比较它?

http://sqlfiddle.com/#!9/bed0c3/3

谢谢

最佳答案

您的查询没有结果,因为您正在将表中存储的值与不同的值进行比较。它们不匹配,因此搜索表达式错误。

没有微秒的时间与有微秒的时间的比较是错误的:

mysql> select '2018-02-19 17:21:51' = '2018-02-19 17:21:51.321343' as is_equal;
+----------+
| is_equal |
+----------+
| 0 |
+----------+

就像pi和整数之间的比较是错误的一样:

mysql> select 3.1415927 = 3 as is_equal;
+----------+
| is_equal |
+----------+
| 0 |
+----------+

您可以通过将小数日期时间值转换为不带毫秒的值来解决此问题:

mysql> select '2018-02-19 17:21:51' = cast('2018-02-19 17:21:51.321343' as datetime) as is_equal;
+----------+
| is_equal |
+----------+
| 1 |
+----------+

转换为datetime 与转换为datetime(0) 相同。即秒小数位的 0 位。

<小时/>

回复您的评论。

这样想:您搜索一个值。您搜索的值未存储在表中。所以搜索失败。这不符合逻辑吗?

关于mysql不在日期时间中存储微秒,但在where条件下使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com