mysql - 这些查询 MySQL 日期范围之间有什么区别
问题描述
我在此列中有一个名为 order_match 的表
+----+-----------+
| id | createdAt |
+----+-----------+
所以我想查询以找出出现在 7 天后范围内的 ID
我有 2 个查询,idk 哪个是真的,为什么它会变成真的
查询 1
SELECT om.id
FROM order_match om
WHERE om.createdAt >=
DATE_SUB(curdate(), INTERVAL 1 WEEK) AND
om.createdAt <
ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), INTERVAL 9 DAY)
GROUP BY om.id;
它返回 57 id
查询 2
SELECT om.id
FROM order_match om
WHERE om.createdAt >=
now() - INTERVAL 7 DAY AND
om.createdAt <
now() + INTERVAL 1 DAY
GROUP BY om.id;
它返回 2 个 id
idk哪一个是真的?或者这两个查询都是错误的?
EXPECTED RESULTS
assume curdate = '2020-02-05'
THEN IF the table was become like this
+----+------------+
| id | createdAt |
+----+------------+
| 1 | 2020-02-02 |
| 2 | 2020-02-03 |
| 3 | 2020-02-04 |
+----+------------+
THEN all of the ID are included because the ids was on the range between 2020-02-05 and 7 days behind (2020-01-30 00:00:00)
解决方案
您的第一个查询找到从 7 天前的午夜开始的 9 天范围;您的第二个查询仅找到从7 天前的当前时间开始的8天范围。由于范围不同,结果不同也就不足为奇了。
推荐阅读
- javascript - Jest 是单独导入每个测试文件,还是在执行前一次挂载所有引用?
- python - 如何计算每个用户(ID)的最大一致活动天数?
- python - Hopf 分岔图
- javascript - 如何在数组中的不同对象中添加值?
- javascript - HTML li 元素不会除外
- kentico - 访问 Kentico 12 替代 URL 值
- python - 如何在熊猫中每行获得第二个非空值
- module - 'synaptic_core' 的非法重新声明
- angular - 如何在 ngFor 中排列项目位置
- python - 为什么我的冷却在 python/pygame 中不起作用?