2014-09-27 127 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