MySQL BETWEEN查询DATETIME格式

问题描述 投票:0回答:2

我正在从MySQL数据库中读取数据。我通过以下查询成功读取时间等于给定时间的数据(这将返回来自alldata表的有效数据。)

SELECT *
FROM alldata
WHERE Time = DATE_FORMAT(NOW()- INTERVAL 1 SECOND,'%Y-%m-%d %H:%i:%s')
LIMIT 0,3;

现在我想在特定时间范围内获取数据,但我的以下查询无效

SELECT *
FROM alldata
WHERE (Time BETWEEN DATE_FORMAT(NOW()- INTERVAL 1 SECOND,'%Y-%m-%d %H:%i:%s') AND DATE_FORMAT(NOW()- INTERVAL 5 SECOND,'%Y-%m-%d %H:%i:%s' ))
LIMIT 0,3;

如果您看到它与第一个查询中的方法相同。但它总是返回空集,而我100%确定在给定的时间范围内存在数据。

mysql database
2个回答
1
投票

您已替换BETWEEN参数中的时间顺序:

BETWEEN工作从BEFORE到AFTER,现在() - 1总是在现在()之后 - ) - 5

也许这会奏效

SELECT *
FROM alldata
WHERE (Time BETWEEN DATE_FORMAT(NOW()- INTERVAL 5 SECOND,'%Y-%m-%d %H:%i:%s') AND DATE_FORMAT(NOW()- INTERVAL 1 SECOND,'%Y-%m-%d %H:%i:%s' ))
LIMIT 0,3;

1
投票

括号应该相同(未经测试,但似乎很可能):

SELECT *
FROM alldata
WHERE Time
BETWEEN DATE_FORMAT(NOW() - INTERVAL 5 SECOND,'%Y-%m-%d %H:%i:%s')
AND DATE_FORMAT(NOW() - INTERVAL 1 SECOND,'%Y-%m-%d %H:%i:%s')
LIMIT 0, 3;
© www.soinside.com 2019 - 2024. All rights reserved.