MySQL 确定用户是否在 X 天内登录

标签 mysql sql timestamp

我正在创建一个 SQL 查询,用于确定用户是否已成为成员(member)一年,如果是,则发送电子邮件。我的逻辑告诉我,我还应该确保他们在过去一年的服务中一直活跃。这是我的 sql 查询:

SELECT * FROM 用户 WHERE FROM_UNIXTIME(date_created,'%Y-%m-%d') + INTERVAL 365 DAY = CURRENT_DATE() AND FROM_UNIXTIME(last_login,'%Y-%m-%d') + INTERVAL 365 天 >= CURRENT_DATE()

我的假设是,如果 last_login + 365 天大于或等于当前日期,则意味着他们在 365 天内登录。

上次登录是一个时间戳。这是正确的 SQL 查询吗?

最佳答案

您的查询当前返回的是恰好一年前创建且此后登录的用户集。您不想要一年前创建并登录的用户吗?即 >= CURRENT_DATE() 而不是 = CURRENT_DATE()

关于MySQL 确定用户是否在 X 天内登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255578/

相关文章:

mysql - 如何添加一对多可以为空的FK

java - 使用 GeneratedValue 作为主键的 Hibernate SaveOrUpdate

sql - 当没有匹配时如何更新 row = NULL

python - 在 DatetimeIndex 上使用 pandas Timestamp 对 DataFrame 进行切片

PHP 不解析双引号内的变量

php - 在 mysql 中更新/删除并获取受影响的行 ID 列表?

sql - 在此上下文中不允许使用名称 "X"。有效表达式是常量、常量表达式和变量。不允许使用列名

来自同一个表的 MySql 外键(2 列与一个键相关)

java.time.Instant -> java.sql.Timestamp 在 Windows 和 *nix 上的行为不同(与时区相关)

facebook - 确定用户何时创建 Facebook 帐户