0

我想将以下查询与 Wilson Score Confidence 结合使用,取自如何不按平均评分排序,以根据用户搜索后过去 24 小时内的投票计算相关内容。我将 unix 时间戳存储在一个字段中,但它不是datetime类型。

现在查询是:

 SELECT p.id, p.post, p.upvotes, p.downvotes, ((upvotes + 1.9208) / (upvotes + downvotes) - 
 1.96 * SQRT((upvotes * downvotes) / (upvotes + downvotes) + 0.9604) /
         (upvotes + downvotes)) / (1 + 3.8416 / (upvotes + downvotes)) 
   AS ci_lower_bound FROM posts p WHERE upvotes + downvotes > 0 
   ORDER BY ci_lower_bound DESC;

我需要获取过去 24 小时内发布的热门内容。我知道我需要使用附加WHERE条件,BETWEEN但不确定如何?

请帮忙。

更新基于下面的答案和一些调整,我做了这样的事情:

 SELECT p.id, p.post, p.upvotes, p.downvotes, ((upvotes + 1.9208) / (upvotes + downvotes) - 1.96 * SQRT((upvotes * downvotes)
 / (upvotes + downvotes) + 0.9604) / (upvotes + downvotes))
 / (1 + 3.8416 / (upvotes + downvotes)) AS ci_lower_bound 
 FROM posts p WHERE upvotes + downvotes > 0 
 AND p.unix_timestamp BETWEEN 1363023402 AND 1363109802 ORDER BY ci_lower_bound DESC

我通过从当前时间戳中减去 86400 秒(即 24 小时)来计算第一个值并得到结果。请,如果您认为它是否仍然可以改进,请建议我。

4

1 回答 1

1
SELECT  *, complex_formula
FROM    posts
WHERE   upvotes + downvotes > 0
        AND ts BETWEEN UNIX_TIMESTAMP($user_time - INTERVAL 1 DAY) AND UNIX_TIMESTAMP($user_time)
于 2013-04-04T07:32:58.697 回答