我正在尝试进行查询,根据时间戳返回结果,比如间隔30分钟。
所以我想到的是我可以
SELECT * FROM x WHERE ts BETWEEN timestamp(now()-3000) AND timestamp(now())
因此,这将在过去30分钟内查询x中的所有内容以及ts列中的时间戳。
但是,这只适用于now()过了yyyy-mm-dd HH:30:00标记,因为它会导致NULL之前的任何时候......这很麻烦,我不明白为什么它赢了从小时开始减去friggin分钟!
请帮帮我!我在最近30分钟内找不到任何其他方法进行查询,这就是我想要实现的目标。
致以最诚挚的问候,
约翰
答案 0 :(得分:40)
SELECT * FROM x WHERE ts BETWEEN timestamp(DATE_SUB(NOW(), INTERVAL 30 MINUTE)) AND timestamp(NOW())
答案 1 :(得分:12)
SELECT * FROM x WHERE ts BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();
答案 2 :(得分:3)
SELECT * FROM x
WHERE ts BETWEEN TIMESTAMPADD(MINUTE, -30, NOW()) AND NOW();
答案 3 :(得分:1)
首先,您需要意识到timestamp()以秒为单位返回一个unix时间戳。 3000秒不是30分钟,应该是1800秒。试试那个
答案 4 :(得分:1)
对我来说,有效的是关注查询
select * from x where (now() - ts) < 300000
30000是30分钟,因为1000毫秒是1分钟
答案 5 :(得分:0)
您必须使用DATE_ADD()和DATE_SUB()运算符作为日期。请查看文档:{{3}}
答案 6 :(得分:0)
SELECT * FROM (`yourdb`) WHERE `timestamp` BETWEEN NOW() - INTERVAL 30 MINUTE AND NOW();