查询中的日期比较:逻辑正确但结果错误
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 条记录都发生在该日期的午夜之后。
我有这个非常简单的查询。但这是 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 条记录都发生在该日期的午夜之后。