mySQL SELECT时间戳(now() - 3000);

时间:2011-09-30 00:19:50

标签: mysql timestamp

我正在尝试进行查询,根据时间戳返回结果,比如间隔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分钟内找不到任何其他方法进行查询,这就是我想要实现的目标。

致以最诚挚的问候,

约翰

7 个答案:

答案 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();