抓住所有行但是在sql的最后一个月

时间:2013-02-28 03:11:56

标签: php mysql sql

以下是获取过去一个月所有行的查询。

$time = time() - 9676800;

$q = $this->db->query("
    select id
    from ipAddress
    where date > {$time}
");

但是如何调整此查询以获取过去一个月的所有行BESIDES?基本上我想最终删除1个月以上的所有行

3 个答案:

答案 0 :(得分:0)

只要您计算“上个月/上个月”的方法符合您的要求,那就很简单了:

where date <= {$time}

答案 1 :(得分:0)

您可以使用date_format,date_sub函数来获取上个月的日期。 在这里找到答案: mysql last month date statement 和这里 MySQL Query to calculate the Previous Month

答案 2 :(得分:0)

你可以这样做

$time = strtotime('-1 Month');

$q = $this->db->query("
    select id
    from ipAddress
    where `date` <= {$time}
");

但如果date是TIMESTAMP,DATE或DATETIME字符串,例如2013-02-27 22:16:382013-02-27,那么您需要类似

的内容
$time = date('Y-m-d H:i:s', strtotime('-1 Month'));

$q = $this->db->query("
    select id
    from ipAddress
    where `date` <= '{$time}'
");

或纯粹在SQL中

select id
from ipAddress
where `date` <= DATE_SUB(NOW(), INTERVAL 1 MONTH)

如果我没记错的话,date是一个保留的mysql字,所以在你的sql中使用反引号。