除了我在过去20分钟发布的内容之外,我想从今天开始收到我发布的所有帖子。
例如,现在是3:30。我希望收到我今天所做的所有帖子,直到3:10。
我试过了:
SELECT id, titulo
FROM posts
WHERE data > DATE_SUB(NOW(), INTERVAL 20 MINUTE)
ORDER BY RAND()
但没有成功。怎么了?
答案 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