gpt4 book ai didi

mysql - MySQL DATE() 函数有什么问题?

转载 作者:行者123 更新时间:2023-11-29 03:15:11 24 4
gpt4 key购买 nike

我使用 DATE 函数测试的查询得到了一些奇怪的结果,最终出现了这些小问题:

mysql> SELECT id FROM job WHERE DATE(due)=CURRENT_DATE;
Empty set (0.00 sec)

mysql> SELECT id FROM job WHERE DATE(due)=CURRENT_DATE AND id>2022;
Empty set (0.00 sec)

mysql> SELECT id FROM job WHERE DATE(due)=CURRENT_DATE AND id=2023;
+------+
| id |
+------+
| 2023 |
+------+

还有一点喜剧

mysql> SELECT id, DATE(due) FROM job WHERE DATE(due) IS NULL AND id>2022;

给我们:

+------+------------+
| id | DATE(due) |
+------+------------+
| 2023 | 2009-08-24 |
| 2024 | 2009-08-24 |
| 2025 | NULL |
| 2026 | 2009-08-24 |
| 2027 | NULL |
| 2032 | NULL |
| 2031 | NULL |
| 2033 | NULL |
| 2034 | NULL |
| 2035 | NULL |
| 2036 | NULL |
| 2037 | NULL |
| 2038 | NULL |
+------+------------+

这是在 5.0.45 上

DATE() 函数是否完全不可靠,还是我遗漏了什么?

说明:

到期字段的类型为 datetime,并且在查询之间的间隔期间没有日期翻转 - 上面提到的所有查询仍然给出相同的结果并且 NOW () 当前为 2009-08-24 22:54:17

在回答 Eric 的问题时:

mysql> SELECT id, due, DATE(due) FROM job WHERE id>2022;
+------+---------------------+------------+
| id | due | DATE(due) |
+------+---------------------+------------+
| 2023 | 2009-08-24 00:00:00 | 2009-08-24 |
| 2024 | 2009-08-24 17:20:56 | 2009-08-24 |
| 2025 | NULL | NULL |
| 2026 | 2009-08-24 17:22:07 | 2009-08-24 |
| 2027 | NULL | NULL |
| 2032 | NULL | NULL |
| 2031 | NULL | NULL |
| 2033 | NULL | NULL |
| 2034 | NULL | NULL |
| 2035 | NULL | NULL |
| 2036 | NULL | NULL |
| 2037 | NULL | NULL |
| 2038 | NULL | NULL |
+------+---------------------+------------+

最佳答案

这对我有用:

SELECT id FROM (SELECT * FROM job WHERE due IS NOT NULL) job_not_null WHERE DATE(due) = CURRENT_DATE

我能够重现列中第一个 NULL 值后比较失败的行为。

关于mysql - MySQL DATE() 函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1321157/

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