查询中的日期比较:逻辑正确但结果错误
Posted
技术标签:
【中文标题】查询中的日期比较:逻辑正确但结果错误【英文标题】:Date comparison in query: Correct logic but wrong result 【发布时间】:2021-12-24 16:25:00 【问题描述】:我有一个非常简单的查询。但它返回错误的结果。
select * from `table_a` where date(`schedule`) > '2021-11-13 06:31:00'
在我的表中,我有这些行
table_a
+---------------------+
| schedule |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+
| 2021-11-13 08:59:00 |
+---------------------+
从技术上讲,这个查询应该返回所有行。但返回 0 行。
我尝试将操作更改为<
,它返回了所有行(相反)。 我错过了什么吗?
注意:schedule
数据类型是 DATETIME。
【问题讨论】:
【参考方案1】:您的schedule
列是日期时间,带有时间组件,因此请删除转换为日期:
SELECT * FROM table_a WHERE schedule > '2021-11-13 06:31:00';
发生的情况是您的 3 条记录都在午夜被投射到 2021-11-13
,这与 2021-11-13 00:00:00
相同。应该清楚的是,所有 3 条记录都发生在该日期的午夜之后。
【讨论】:
这是否也适用于'between'操作?我正在使用 laravel 框架,似乎如果我使用 whereBetween() 子句,它会转换我传递的参数。 看不到 Laravel 代码就忍不住了。以上是关于查询中的日期比较:逻辑正确但结果错误的主要内容,如果未能解决你的问题,请参考以下文章