我正在从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%确定在给定的时间范围内存在数据。
您已替换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;
括号应该相同(未经测试,但似乎很可能):
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;