【问题标题】:how to update rows older than 30 seconds or 30 minutes [duplicate]如何更新超过 30 秒或 30 分钟的行 [重复]
【发布时间】:2014-09-27 16:24:25
【问题描述】:

我正在尝试弄清楚如何更新超过 30 秒或 30 分钟的 MySQL 行。

$sql = "SELECT C.sessid, C.datetime, U.username, U.firstname, U.lastname, U.sessid FROM checkins C, users U WHERE U.sessid = C.sessid AND SUBTIME(NOW(),'0 00:01:00')>C.datetime";
$result = mysql_query( $sql );
while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ) {
mysql_query("UPDATE checkins SET status = 'was in'");
}

这里我加入了表,只有 users 表和 checkins 表。 如果 C.datetime 早于 1 分钟,我正在使用 subtime 来确定时差并尝试更新 checkins 表的行

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这是你要找的吗?

    UPDATE checkins c join
           users u
           on c.sessid = u.sessid
        SET status = 'was in'
        WHERE c.datetime < now() - interval 30 second;
    

    users 表可能不需要,除非您需要它进行过滤。

    只需将30 second 更改为30 minute 30 分钟间隔即可。

    【讨论】:

    • 感谢 gordon 的帮助,虽然仍然无法启动,但我正在使用 date("Y-m-d H:i:s") 作为 c.datetime
    • 您应该使用datetime 将日期存储在数据库中,而不是作为字符串。
    • 我没有使用日期时间,因为它总是返回 0000-00-00 00:00:00
    • 不幸的是,这不起作用。对不起。
    • @morty 。 . .您应该修复您的数据,以便日期/时间值以本机格式存储。
    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多