2013-02-19 49 views
-2

我「user`表看起來喜歡下面的時間問題..如何解決在where子句

id | name | time 

1 | a1 | 2012-11-15 06:20:28 

2 | a2 | 2012-11-14 06:20:28 

3 | a3 | 2012-11-13 06:20:28 

現在我的問題是,我怎麼能得到用戶的細節,其時間是在現在還是30 秒之間小於目前..

我試過..

"SELECT * 

FROM user 

WHERE strtotime(user_session.session_timestamp)-30 < ".time().")"; 

它不工作...它會拋出語法錯誤

請幫我解決問題

+0

顯示php代碼。 – 2013-02-19 18:51:49

+2

'strtotime()'是PHP函數 - 不是MySQL ... – alfasin 2013-02-19 18:52:48

+0

它引發了語法錯誤,因爲'strtotime'是一個PHP函數。 – luchosrock 2013-02-19 18:53:22

回答

5

不需要PHP。您可以使用MySQL Date and Time functions

SELECT * FROM user WHERE time BETWEEN (NOW() - INTERVAL 30 SECOND) AND NOW(); 

注:這查詢不優化的日期函數阻止查詢被緩存。如果這是一個大問題,那麼使用PHP等價物可能會更高效。

0

strtotime()是一個PHP函數,而不是MySQL。

0

你不能那樣做。你需要做兩個不同的SELECT陳述。一個收集user_session.session_timestamp。調用PHP strtotime()函數-30然後在當前的SELECT語句中使用該變量。根據您的設置,您可能會使用foreach($array as $key => $value)來逐步執行並根據需要執行儘可能多的選擇以獲取個人退貨。許多問題是在SQL語句中使用PHP函數。

或者做傑森說的話!純SQL總是比較好,但是由於某種原因,我認爲您需要或希望使用PHP,但有時需要訪問PHP中的數據纔是重要的原因。