【发布时间】:2023-02-09 23:57:52
【问题描述】:
我目前正在练习我的 SQL 技能。我想获取过去1分钟内的所有数据。
查询是SELECT * FROM menfesses WHERE created_at >= NOW() - INTERVAL 1 MINUTE;
但不知何故,它返回所有数据。
我也使用 date_add 方法但没有任何效果
我做错了什么?谢谢
【问题讨论】:
-
服务器时间是22.30。所以它不应该在 1 分钟内
我目前正在练习我的 SQL 技能。我想获取过去1分钟内的所有数据。
查询是SELECT * FROM menfesses WHERE created_at >= NOW() - INTERVAL 1 MINUTE;
但不知何故,它返回所有数据。
我也使用 date_add 方法但没有任何效果
我做错了什么?谢谢
【问题讨论】:
必须使用 BETWEEN 选择最后五分钟。
还测试你应该添加
SELECT created_at, Now() FROM menfesses WHERE created_at BETWEEN NOW() - INTERVAL 5 MINUTE AND NOW()
这样就有机会正确调试它
Between 只会给你正确的数据,因为你的测试服务器的日期可能比现在晚
【讨论】:
可能您的服务器时间不是您认为的那样。
这项工作每圈 5 分钟。
MySQL 5.6 架构设置:
CREATE TABLE t1
(`c_date` datetime)
;
INSERT INTO t1
(`c_date`)
VALUES
(NOW() - INTERVAL 30 MINUTE),
(NOW() - INTERVAL 2 MINUTE),
(NOW() - INTERVAL 1 MINUTE)
;
查询 1:
SELECT *,NOW() FROM t1 WHERE c_date >= NOW() - INTERVAL 5 MINUTE
| c_date | NOW() |
|----------------------|----------------------|
| 2023-02-09T15:44:05Z | 2023-02-09T15:46:20Z |
| 2023-02-09T15:45:05Z | 2023-02-09T15:46:20Z |
【讨论】: