SQL - 在 WHERE 条件下使用数学运算


SQL - Use maths operations in WHERE condition

我目前有这个PHP/SQL代码:

$today = date("Y-m-d");
$sqlQuery = 'SELECT id FROM post 
            WHERE (100*((agree+disagree)-('.nbDays('date', $today).')*10) >= 75)';

还有我的nbDays函数。

function nbDays($debut, $fin) {
    $nbSecondes= 60*60*24;
    $debut_ts = strtotime($debut);
    $fin_ts = strtotime($fin);
    $diff = $fin_ts - $debut_ts;
    return round($diff / $nbSecondes);
}

这是我的帖子表的样子:

Post
-- #id
-- [int] agree
-- [int] disagree
-- [datetime] date

我想做的是为符合此条件的帖子返回一个 id 数组;

(100 * ( 同意/(同意+不同意) )-(从发布日期到今天的天数) )> 75

我想使用 SQL 请求,这样我就不必在整理之前列出所有帖子。

我希望我足够清楚,并希望你能帮助我。

多谢!

在您的情况下,您可以编写一个数据库存储过程来处理你的逻辑.然后直接在 PHP 中调用数据库过程。总之 如果您使用MYSQL,也许您可以尝试以下简单查询。

SELECT id FROM post WHERE (100*((agree+disagree)-(UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(date))*10) >= 75);