0

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

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

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

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

4

2 回答 2

1

您的查询当前正在返回恰好在一年前创建并从那时起登录的用户集。您不想要一年前创建并登录的用户?即>= CURRENT_DATE()代替= CURRENT_DATE().

于 2013-04-27T18:40:10.797 回答
0

知道它是否是有效查询的唯一方法是对其进行测试,而对其进行测试的唯一方法是创建跨越边界条件的数据。

一定要注意看看 2014 年 2 月 29 日会发生什么,或者那天最后一次登录的人。

于 2013-04-27T18:40:08.907 回答