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

Jas*_*onS 9 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}");
Run Code Online (Sandbox Code Playgroud)

:@ =数据库前缀

Mat*_*aly 24

尝试使用 date_sub

where u.last_login < date_sub(now(), interval 1 month)
Run Code Online (Sandbox Code Playgroud)

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

  • 怎么会这样?@JasonS希望找到上个月尚未登录系统的所有用户.这意味着他们的上次登录日期将在一个月之前.因此,我们希望将记录限制在具有last_login的记录之前(即小于)一个月之前的日期().使用>只会为您提供上个月登录的用户. (2认同)

T.J*_*der 11

您可以date_add结合使用now:

...where u.last_login < date_add(now(), interval -1 month)
Run Code Online (Sandbox Code Playgroud)

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