【发布时间】:2019-05-28 12:36:37
【问题描述】:
我的数据库中有这张表:
table t
id | a | b | date_x
1 | 81 | 12 | 2018-03-16
2 | 9 | 54 | 2025-04-21
3 | 81 | 67 | 2018-03-16
4 | 763 | 81 | 2018-03-16
5 | 90 | 22 | 2025-12-08
date_x 是日期类型
我想选择 a = 81 或 b = 81 且 date_x 在 2019-05-28 之前的行。
所以我在 MySQL Workbench 中执行以下查询:
SELECT * FROM t
WHERE a = '81' OR b = '81'
AND date_x > '2019-05-28';
这是我得到的:
1 | 81 | 12 | 2018-03-16
3 | 81 | 67 | 2018-03-16
我希望 2018-03-16 不迟于 2019-05-28 。此外,为什么只返回 2 行?在 date_x 列中还有另一个相同日期。
这个查询返回相同的结果:
SELECT * FROM t
WHERE a = '81' OR b = '81'
AND date_x > str_to_date('2019-05-28', '%Y-$m-%d');
我为调试执行了以下查询:
SELECT * FROM t
WHERE a = '81' OR b = '81'
AND date_x < '2019-05-28';
和
SELECT * FROM t
WHERE a = '81' OR b = '81'
AND date_x < str_to_date('2019-05-28', '%Y-$m-%d');
然后两者都按预期返回:
1 | 81 | 12 | 2018-03-16
3 | 81 | 67 | 2018-03-16
4 | 763 | 81 | 2018-03-16
我阅读了以下问答,但我仍然遗漏了一些东西:
- MySQL date comparison function
- MySQL date comparison issue
- MySQL date/author comparison
- MySQL Date comparison advice
- MySQL date comparison
有什么提示吗?谢谢
【问题讨论】: