MySQL哪里的日期大于一个月?

时间:2010-11-21 11:26:27

标签: mysql

我有一个名为'last_login'的日期时间列。

我想查询我的数据库,以选择上个月内未登录的所有记录。我该怎么做?

这就是我目前的情况:

$query = $this->query("SELECT u.id, u.name, u.email, u.registered, g.name as group_name FROM `:@users` AS u LEFT JOIN `:@groups` AS g on u.group_id = g.id WHERE u.last_login = ...... LIMIT {$limit_start}, {$limit_end}");

:@ =数据库前缀

3 个答案:

答案 0 :(得分:21)

尝试使用date_sub

where u.last_login < date_sub(now(), interval 1 month)

(与第一个答案类似,但在我看来,使用正整数更“自然”)

答案 1 :(得分:10)

您可以将date_addnow结合使用:

...where u.last_login < date_add(now(), interval -1 month)

当然,由于两者都是特定于MySQL的,因此限制了MySQL后端。或者,您可以通过PHP找出一个月前的日期(我不是PHP人员,但我猜DateTime::sub会对此有所帮助)然后在正常查询中包含该日期你可以选择任何其他日期/时间字段。

答案 2 :(得分:-1)

几乎是正确的,除了>应该是正确的。

where u.last_login > date_sub(now(), interval 1 month)