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

Php 返回早于x个月的值的SQL语句,php,sql,sql-server,string,datetime,Php,Sql,Sql Server,String,Datetime,我在这里要做的是创建一个sql语句来满足某些WHERE条件,这个语句是$build。我在这里试图做的是取整数$age,它是以月为单位的值,然后我希望语句将其设置为只在sql语句中返回早于$age月的结果。列datetime包含表中行的年龄,列的屏幕截图 $sql="SELECT * FROM $tbl_name WHERE type='plugin' and access_restriction<'$permissions'"; if ($age!="&qu

我在这里要做的是创建一个sql语句来满足某些WHERE条件,这个语句是$build。我在这里试图做的是取整数$age,它是以月为单位的值,然后我希望语句将其设置为只在sql语句中返回早于$age月的结果。列datetime包含表中行的年龄,列的屏幕截图

$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=“从$tbl\u name中选择*,其中type='plugin'和access\u restriction如果您想将日期设置为过去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

WHERE DATE\u列请使用
$sql
的值编辑您的文章。打印$sql并请发布。这样做行不通,因为它是您希望WHERE子句所在的列。@CRAFTYDBA“yourSqlDatetime”应该是表列。尚未测试,但应该可以工作。Edited nowdatediff在sql Server中,NOW()时间间隔是MYSQL。问用户,您想包括这个月吗?如果不是,它应该是>=2013年8月1日,@CRAFTYDBA MYSQL也有datediff