MySQL选择所有未登录30天的用户

Kri*_*ian 2 mysql sql unix-timestamp

我有一个具有用户ID和时间戳的表,如下所示.

[member id] [timestamp]
1            1142461087
1            1339461211
2            1321280124
1            1249042100
3            1308325002
3            1308259235
Run Code Online (Sandbox Code Playgroud)

我想返回一个未登录30天或更长时间的唯一成员ID列表.

这是我目前的查询:

SELECT member_id, login_timestamp
  FROM logins 
  WHERE login_timestamp <= 1329461087
  GROUP BY member_id
  ORDER BY login_timestamp DESC
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的,但出于某种原因,在生产中,管理员用户的ID显示在列表中,这是因为管理员每天都会记录.

Kib*_*bee 7

像这样的事情应该有效。

SELECT member_id, MAX(login_timestamp)
FROM logins 
GROUP BY member_id
HAVING MAX(login_timestamp) <= 1329461087
ORDER BY MAX(login_timestamp) DESC
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 5

尝试,而不是硬编码截止时间

SELECT ...
FROM ...
WHERE login_timestamp <= UNIX_TIMESTAMP((NOW() - INTERVAL 30 DAY))
...
Run Code Online (Sandbox Code Playgroud)

至于您的管理员帐户 - 登录时间戳何时更新?当管理员帐户登录时是否有特殊情况?