2014-01-21 72 views
0

我嘗試運行PHP如果說,如果有兩個MySQL時間戳比之間超過3600秒聲明做些什麼聲明。我認爲我已經正確地寫入了IF語句,但是它總是被解析爲真的地方。PHP如果用兩個時間戳

$time1=mysqli_query($con,"SELECT time_to_sec(max(time)) as time FROM table"); 
$time2=mysqli_query($con,"SELECT time_to_sec(max(time)) as time FROM table and time <>(SELECT max(time) FROM table)"); 


if (($time1->fetch_object()->time) - ($time2->fetch_object()->time) > 3600); 
{ 
echo $test 
} 

當我運行:

echo $time1->fetch_object()->time-$time2->fetch_object()->time; 

這表明我期望,但正確的值,即使其低於3600它仍然沒有回聲$測試。任何想法可能造成這種情況?

謝謝!!!

+2

你背後的'如果()'一個多餘的分號,結束了發言的權利有 –

+1

哇!謝謝!我完全錯過了。非常感謝您的快速響應! – AAA

回答

1

使用CASE語句,更好的和有效的方法:

Select event, case when TIMESTAMPDIFF(SECOND, last_timstamp, first_timestamp)<3600 then `under_time` when TIMESTAMPDIFF(last_timstamp, first_timestamp)>3600 then `over_time` end case as `duration_flag` from your_table where your_conditions 

然後在你的PHP 調理基於查詢的標誌輸出。

這樣,你向服務器請求少,並且有了一個更簡潔的查詢。

也許MySQL的有一個老臭蟲以TIMESTAMPDIFF,因此,如果它不`噸的工作,用這個來代替:

Time_To_Sec(last_timstamp) - Time_To_Sec(first_timestamp)