2014-09-27 129 views
0

我想弄清楚如何更新30秒或30分钟以前的MySQL行。如何更新大于30秒或30分钟的行

$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'"); 
} 

在这里,我已经加入了表格,只是用户表和检查表。 我正在使用子时间来确定时差,并试图更新行的checkins表,如果C.datetime大于1分钟只是为了测试

回答

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分钟。

+0

感谢您的帮助戈登,虽​​然仍然不能得到它去,我使用日期(“Ymd H:我:S”)为c.datetime – morty 2014-09-27 16:37:33

+0

你应该使用'datetime'在数据库中存储日期,而不是字符串。 – 2014-09-27 16:40:11

+0

我没有使用日期时间,因为它总是返回0000-00-00 00:00:00 – morty 2014-09-27 16:45:20