2013-11-22 128 views
0

這應該刪除所有24小時前刪除的玩家。但是這刪除了我的整個球員表。幸運的是我在測試之前進行了備份,所以沒有任何傷害。我究竟做錯了什麼?刪除24小時前發生時間戳的所有字段

deletedInt(10) unsigned default 0和php的time()用於存儲時間。

DELETE FROM players WHERE deleted < (unix_timestamp(now()) - 86400000) 

回答

0

一個(最明顯的)問題是,MySQL的unix_timestamp功能,因爲時代,不毫秒開始返回的秒數。

24小時內只有86,400秒。您擁有的文字代表1000天。

我的方法是在DATETIME上做日期算術,然後轉換結果。

UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR) 

注:

你可以測試謂詞SELECT語句(即WHERE子句),而不是一個DELETE。

0

24小時秒是24 * 60 * 60 = 86400

Linux的時間是自紀元秒因此,如果這是存儲在已刪除INT(10)列然後那麼該語句應的值:

DELETE FROM players WHERE deleted <(unix_timestamp(now()) - 86400)