我的问题在这里简要介绍......
用户登录后,我将登录日期存储在users表中。如果用户未登录72小时,我需要将其状态更改为非活动状态。
如何在用户使用My Sql登录后查看是否完成72小时。
提前致谢...
答案 0 :(得分:5)
我建议使用TIMEDIFF()函数,您可以在此处找到: dev.mysql.com timediff doc
在你的情况下,我将我的where子句格式化为:
WHERE
TIMEDIFF(CURTIME(), LastLoginDate) > '3 0:0:0.0'
或
WHERE
TIMEDIFF(CURTIME(), LastLoginDate) > '72:0:0.0'
我没有专门做过这个,但基本概念应该适合你。
答案 1 :(得分:3)
创建一个CRON例程,使用此查询每小时运行一次:
UPDATE users
SET status = 'Inactive'
WHERE (SELECT * FROM users WHERE last_login < now() - 259200)
为了更具体地回答你的问题,在运行时,where子句告诉你所有未登录72小时的用户。
SELECT * FROM users WHERE last_login < now() - 259200
但是,无法在完全 72小时内将每个用户设置为无效。为了比上面提供的解决方案更准确,请更频繁地运行查询。
*注意 - 在适当的位置插入列名。查询未经测试。 259200 = 72小时内的秒数 - 假设您存储时间戳秒(纪元)
答案 2 :(得分:0)
使用DATETIME类型存储日期,使用NOW()从DATE_SUB()减去72小时,然后查看结果是否大于数据库中存储的值。