查询中的日期比较:逻辑正确但结果错误

Date comparison in query: Correct logic but wrong result

我有这个非常简单的查询。但这是 return 错误的结果。

select * from `table_a` where date(`schedule`) > '2021-11-13 06:31:00'

在我的 table 中,我有这些行

table_a
+---------------------+
|      schedule       |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+

从技术上讲,此查询应该 return 所有行。但是 0 行是 returned。 我尝试将操作更改为 < 并且它 returned 所有行(这是相反的)。 我是不是漏掉了什么?

注意:schedule数据类型是 DATETIME。

您的 schedule 列是日期时间,带有时间部分,因此请删除对日期的强制转换:

SELECT * FROM table_a WHERE schedule > '2021-11-13 06:31:00';

发生的事情是你的 3 条记录都在午夜转换为 2021-11-13,这与 2021-11-13 00:00:00 相同。很明显,所有 3 条记录都发生在该日期的午夜之后。