获取今天发布的帖子但至少20分钟

时间:2016-07-17 18:34:56

标签: mysql

除了我在过去20分钟发布的内容之外,我想从今天开始收到我发布的所有帖子。

例如,现在是3:30。

我希望收到我今天所做的所有帖子,直到3:10。

我试过了:

SELECT id, titulo
FROM posts
WHERE data > DATE_SUB(NOW(), INTERVAL 20 MINUTE)
ORDER BY RAND()

但没有成功。怎么了?

3 个答案:

答案 0 :(得分:2)

您的查询设置为获取过去20分钟的帖子,如果您今天除了过去的20分钟之外,您应该使用data < DATE_SUB( NOW( ) , INTERVAL 20 MINUTE )而不是大于。

第二部分(从今天起)可以使用curdate()函数完成:

CURDATE() = DATE(data)

和在一起:

SELECT id, titulo
FROM posts WHERE 
data < DATE_SUB( NOW( ) , INTERVAL 20 MINUTE ) 
AND
CURDATE() = DATE(data)
ORDER BY RAND( ) 

答案 1 :(得分:1)

你的条件是错误的做法:你想要回复早于20分钟前的帖子:

SELECT id, titulo
FROM posts
WHERE data < DATE_SUB(NOW(), INTERVAL 20 MINUTE)
ORDER BY RAND()

你还说你只想要今天的帖子,所以必须添加第二个测试。然后查询:

SELECT id, titulo
FROM posts
WHERE data < DATE_SUB(NOW(), INTERVAL 20 MINUTE)
     AND DATE(data) = CURDATE()
ORDER BY RAND()

文档:
- CURDATE

答案 2 :(得分:1)

如果您希望通过使用索引使查询仍然快速,则需要避免在具有潜在索引的列上使用函数。你可以这样做

WHERE data between curdate() and now() - interval 20 MINUTE