2012-07-22 141 views
3

我想從一個MySQL數據庫中,我的時間戳是UNIX格式的表中獲取數據越來越記錄

上來一些可測量類,但還是沒有後使用下面的查詢能夠得到結果顯示空行。任何人都可以幫助

SELECT * 
FROM bs_items 
WHERE owner_id='3' 
AND timestamp > (now() - interval 30 minute) 

它應該工作不知道問題出在哪裏。

TABLE: bs_items 
================================================== 
| log_id | owner_id | item_code | timestamp | 
================================================== 
| 1  | 10   | 100   | 12345  | 
-------------------------------------------------- 
| 2  | 12   | 200   | 23456  | 
-------------------------------------------------- 

回答

2

這已經有一段時間,但我認爲這可能是正確的:

SELECT * FROM bs_items WHERE 
datetime_column < DATE_SUB(NOW(), INTERVAL 30 MINUTE) 

您也可以通過選擇和地點內能夠有選擇這樣做,使日期時間比較查詢爲小於。 因此,在猜測中選擇 '2012-07-22 13點50分14秒' +間隔30 MINUTE

: SELECT * FROM表WHERE datetimecol <(選擇 '2012-07-22 13點50分14秒' +間隔30分鐘),

嘗試運行查詢,看看有什麼結果增加30分鐘,看看導致調試:

select '2012-07-22 13:50:14' + INTERVAL 30 MINUTE 
+0

沒有朋友的給我所有的記錄和timstamp是UNIX格式 – 2012-07-22 12:56:50

+0

另一個想法......我想FROM_UNIXTIME()的作品..在unix time + interval 30 minture上查詢查看結果。 類似於select FROM_UNIXTIME('value from db')+ INTERVAL 30 MINUTE – Darcey 2012-07-22 13:09:20

+0

@Darcey幾乎正確,因爲DATE_SUB函數返回NOW()減去30分鐘前,所以<應該是a>,因此要查看來自最近30 datetime_column中的分鐘數將選擇大於30分鐘前的數據。如果您在測試時未發現差異,只需提及其他人即將通過此解決方案。 – 2017-07-25 08:21:06

1

它試圖足夠長的時間,我發現我完美的解決方案後,似乎

$sql=mysql_query("SELECT * FROM bs_items WHERE 
    owner_id='$loguser' AND timestamp > (UNIX_TIMESTAMP() -600) 
    order by timestamp desc"); 

它似乎給結果我想,分享它可能會幫助別人..