2012-05-28 50 views
-3

我有一個PHP腳本,應該在每個讓我們說15分鐘後刪除數據庫中的數據。找到當前時間和時間戳字段之間的差異

現在在數據庫表中,我有一個字段時間戳,每次修改字段時都會存儲當前時間戳。

每隔15分鐘我想檢查當前時間和存儲在時間戳記字段中的值之間的差異。

我試圖if((time()-$row['timestamp'])>900) //(900秒)

這AINT工作,因爲時間戳字段還存儲與當前時間以及日期。 我該如何繼續

+0

實際上'time()'會返回當前的時間戳,所以它應該和你的'timestamp'字段相匹配。 – flowfree

+1

請使用搜索功能。如何在PHP和/或MySql中比較時間已被問及回答了上百次,[我們要求你做家庭作業](http://stackoverflow.com/questions/ask-advice)是有原因的。 – Gordon

回答

3

如果存放時間與MySQL TIMESTAMP數據類型,那麼最好的辦法是使用在TIMESTAMP數據上運行的MySQL函數。 TIMESTAMPDIFF()將非常合適,因爲它也允許爲結果定義單位。

SELECT TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) FROM `my_table` 

將返回因爲my_timestamp_column值開始已經經過的分鐘數(整數)。用要麼是PHP腳本的cron或者乾脆合併將其與網頁上的每個請求,要實現的目標:

DELETE FROM `my_table` 
WHERE TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) > 15 

此外,您可能需要閱讀本手冊的Date and Time Functions內容有一些其他的解決方案。

2

這將是最容易完全處理這個使用數據庫。使用CURR_TIME獲得當前的時間戳,然後使用TIMEDIFF()來生成條件

2

你剛纔提到,$row['timestamp']存儲與datetime format.So值將其轉換爲時間戳,使用strtotime()功能。所以,現在你的代碼將是

if((time()-strtotime($row['timestamp']))>900) //(900 is the seconds) 

我希望這有助於

2

可以使用SQL也做到這一點:

DELETE FROM `table` WHERE `timestamp` < UNIX_TIMESTAMP() - 60 * 15