如何在mysql中计算小时数

时间:2011-01-04 19:18:28

标签: mysql

我的问题在这里简要介绍......

用户登录后,我将登录日期存储在users表中。如果用户未登录72小时,我需要将其状态更改为非活动状态。

如何在用户使用My Sql登录后查看是否完成72小时。

提前致谢...

3 个答案:

答案 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小时,然后查看结果是否大于数据库中存储的值。