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

时间:2015-03-16 15:34:45

标签: php sql

我目前有这个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请求,这样我就不必在排序之前列出所有帖子。

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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