我在这里要做的是创建一个sql语句来执行一些WHERE条件,这个语句是$ build。我在这里尝试做的是取整数$ age,这是一个以月为单位的值,然后我希望该语句能够使我的sql语句中只返回超过$ age months的结果。列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和$ sql。 $ build结束,这样你就可以看到它们如何组合在一起
感谢您的帮助,如果我措辞不好或您不理解,请发表评论。
注意,如果$ age = 0;最初它返回值
答案 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