0

这是一个查询,用于获取过去一个月的所有行。

$time = time() - 9676800;

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

但是我怎样才能调整这个查询来获取过去一个月的所有行呢?基本上我想最终删除超过 1 个月大的所有行

4

3 回答 3

0

只要您计算“上/上个月”的方法让您满意,那么它很简单:

where date <= {$time}

于 2013-02-28T03:15:03.470 回答
0

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

于 2013-02-28T03:17:15.067 回答
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:38或者2013-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 中使用反引号。

于 2013-02-28T03:18:35.613 回答