Mysql 检查是否超过30分钟

Mysql 检查是否超过30分钟,mysql,datetime,Mysql,Datetime,我在做一个小项目,遇到了一些麻烦。 问题是,我想检查自更新u\u latest\u活动以来是否有超过30分钟的时间,如果有,则更新并设置u\u online=0 MySQL数据库中的字段是datetime字段。 我还没有PHP代码可以显示,因为我尝试过的代码都不起作用,我尝试过使用DateTime对象,但我不知道它是如何工作的。我在谷歌上搜索了很多,但我还是想不出来,所以我把这当作最后的手段。我也很乐意接受SQL解决方案 提前谢谢。这是纯mySQL,ans可能会有所帮助 SELECT if(DA


我在做一个小项目,遇到了一些麻烦。
问题是,我想检查自更新
u\u latest\u活动以来是否有超过30分钟的时间,如果有,则更新并设置
u\u online=0
MySQL数据库中的字段是datetime字段。 我还没有PHP代码可以显示,因为我尝试过的代码都不起作用,我尝试过使用DateTime对象,但我不知道它是如何工作的。我在谷歌上搜索了很多,但我还是想不出来,所以我把这当作最后的手段。我也很乐意接受SQL解决方案


提前谢谢。

这是纯mySQL,ans可能会有所帮助

SELECT if(DATE_ADD(u_latest_activity, INTERVAL 30 MINUTE) > NOW() , 1 , 0) as u_online from mytable;

这是纯mySQL,ans可能会有所帮助

SELECT if(DATE_ADD(u_latest_activity, INTERVAL 30 MINUTE) > NOW() , 1 , 0) as u_online from mytable;
这应该做到:

UPDATE your_table SET u_online = 0 WHERE u_latest_activity < DATE_SUB(NOW(), INTERVAL 30 MINUTE)
更新您的_表集u_online=0,其中u_最新活动
这应该可以做到:

UPDATE your_table SET u_online = 0 WHERE u_latest_activity < DATE_SUB(NOW(), INTERVAL 30 MINUTE)
更新您的_表集u_online=0,其中u_最新活动
u\u online
您实际需要该值做什么?如果是为了检查有多少人在线,只需查询数据库在过去半小时内有多少个
u\u latest\u activity
的值…?我正在检查用户状态,以显示他们是否在线,以及他们在30分钟内没有活动,我想将他们的状态设置为离线。这是为了一个社区项目,我正在致力于提高我的php技能。你真正需要的价值是什么?如果是为了检查有多少人在线,只需查询数据库在过去半小时内有多少个
u\u latest\u activity
的值…?我正在检查用户状态,以显示他们是否在线,以及他们在30分钟内没有活动,我想将他们的状态设置为离线。这是一个社区项目,我正在努力提高我的php技能。谢谢,这很好,将在5分钟内为你设置为接受答案。谢谢,我很高兴它有帮助:-)谢谢,这很好,将在5分钟内为你设置为接受答案。谢谢,我很高兴它有帮助:-)谢谢,但这只会选择所有行,我想选择并更新行。我选择并更新了行,但谢谢您的回答。我仍然可以从您的示例中学习。我建议使用“DATE_SUB(NOW(),INTERVAL 30 MINUTE)”(这是常量)而不是“DATE_ADD(u_latest_activity,INTERVAL 30 MINUTE)”,因为MySQL无法在表达式中的“u latest_activity”上使用任何索引(如果存在)。看我的小提琴,你说得对。但由于我没有使用任何
WHERE
子句,所以这个问题不会影响我的代码片段。但事实上,我很高兴您指出了这一点。否则孩子们就不会知道这一点。你的sqlfiddle非常有用。我希望能够将评论标记为“已接受”;-)谢谢,但那只会选择所有的行,我想选择并更新这些行。我选择了,谢谢你的回答。我仍然可以从您的示例中学习。我建议使用“DATE_SUB(NOW(),INTERVAL 30 MINUTE)”(这是常量)而不是“DATE_ADD(u_latest_activity,INTERVAL 30 MINUTE)”,因为MySQL无法在表达式中的“u latest_activity”上使用任何索引(如果存在)。看我的小提琴,你说得对。但由于我没有使用任何
WHERE
子句,所以这个问题不会影响我的代码片段。但事实上,我很高兴您指出了这一点。否则孩子们就不会知道这一点。你的sqlfiddle非常有用。我希望能够将评论标记为“已接受”;-)