我正在创建一个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查询吗?
答案 0 :(得分:1)
您的查询当前正在返回一年前创建并且从那时起登录的用户集。您不希望一年前创建最多的用户以及谁登录?即>= CURRENT_DATE()
而不是= CURRENT_DATE()
。
答案 1 :(得分:0)
知道它是否是有效查询的唯一方法是测试它,测试它的唯一方法是创建跨越边界条件的数据。
请注意2014年2月29日发生的事情,或者当天最后一次登录的人。