Reputation: 346
I am reading data from MySQL database. I successfully read data where time is equal to given time by the following query (This returns me valid data from alldata table.)
SELECT *
FROM alldata
WHERE Time = DATE_FORMAT(NOW()- INTERVAL 1 SECOND,'%Y-%m-%d %H:%i:%s')
LIMIT 0,3;
Now I want to get data between a specific time frame, but my following query isn't working
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;
If you see it's the same method as in the first query. But it always returns empty set while I'm 100% sure there exist data in a given time frame.
Upvotes: 0
Views: 59
Reputation: 1203
You've replaced the chronological order in the BETWEEN parameters:
BETWEEN works from BEFORE to AFTER, NOW() - 1 is ALWAYS AFTER NOW() - 5
Maybe this will work
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;
Upvotes: 1
Reputation: 76579
the brackets should be alike this (not tested, but it appears rather likely):
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;
Upvotes: 1