返回早于x个月的值的SQL语句

时间:2014-01-22 16:09:07

标签: php sql sql-server string datetime

我在这里要做的是创建一个sql语句来执行一些WHERE条件,这个语句是$ build。我在这里尝试做的是取整数$ age,这是一个以月为单位的值,然后我希望该语句能够使我的sql语句中只返回超过$ age months的结果。列datetime包含表中行的年龄,列的屏幕截图

enter image description here

$sql="SELECT * FROM $tbl_name WHERE type='plugin' and access_restriction<'$permissions'";

if ($age!=""){
    $time = date('H:i:s', time());
    $years = date('Y');
    $months = date('m');
    $days = date('d');
    $newmonths = $months - $age;

    while ($newmonths <=0) {
        $years = $years - 1;
        $newmonths = $newmonths +12;
    }
    $age = $years . "/" . $months . "/" . $days . " " . $time;
    $build = $build . " and datetime<CAST('" . $age . "' AS DATE)";
}

$sql = $sql . $build;

我在开头包含$ sql和$ sql。 $ build结束,这样你就可以看到它们如何组合在一起

感谢您的帮助,如果我措辞不好或您不理解,请发表评论。

注意,如果$ age = 0;最初它返回值

1 个答案:

答案 0 :(得分:1)

如果您想要过去5个月的日期,您可以这样做:

$howManyMonthsBack = 5;
$dateAgo = date('Y-m-d H:i:s', mktime(date('H'), date('i'), date('s'), date('m') - $howManyMonthsBack , date('d'), date('Y')));

然后在mysql中你应该使用datediff(date1,date2)来比较日期:

WHERE datediff(DATE_COLUMN, $dateAgo) >= 1

或者你可以使用这样的东西:

WHERE DATE_COLUMN <= NOW() - INTERVAL 5 MONTHS