gpt4 book ai didi

mysql - timediff 大于 5 分钟的 UPDATE 列

转载 作者:行者123 更新时间:2023-11-29 02:14:15 28 4
gpt4 key购买 nike

我有一个表( session ),其中有 2 列我必须用于此查询。Session_Active(这是一个 tinyInt)和 Last_active(这是一个日期时间)。

我想创建一个查询来计算所有表的现在和“Last_active”之间的时间差,其中“Session_Active”为真,如果它大于 5 分钟,它应该更改“Session_Active”。

这是我拥有的有效部分:

SELECT timediff(now(), `Last_Active`) from sessions WHERE `Session_Active` = true;

我完全不知道如何检查差异是否大于 5 分钟,我也不知道在哪里/如何放置 UPDATE Session_Active = false(如果差异是 5 分钟或更多)

提前致谢! (:

最佳答案

您可以使用以下解决方案使用 DATE_SUB :

UPDATE sessions SET `Session_Active` = 0
WHERE `Last_Active` <= DATE_SUB(NOW(), INTERVAL 5 MINUTE)
AND `Session_Active` = 1

您想使用时间戳解决方案吗?

您可以使用 TIMESTAMPDIFF :

UPDATE sessions SET `Session_Active` = 0
WHERE TIMESTAMPDIFF(MINUTE, `Last_Active`, NOW()) >= 5
AND `Session_Active` = 1

Note: You should be careful with using TIMESTAMP! Some information why you shouldn't use TIMESTAMP: https://stackoverflow.com/a/35469149/3840840. On this answer there is a reference to this article describing the performance of DATETIME, TIMESTAMP and INT.

The TIMESTAMP solution is only working until 2038. This will be caused by the Year 2038 problem.

A very good explanation of this problem and what is happening in 2038: https://stackoverflow.com/a/2012620/3840840

关于mysql - timediff 大于 5 分钟的 UPDATE 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42831585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com