這應該刪除所有24小時前刪除的玩家。但是這刪除了我的整個球員表。幸運的是我在測試之前進行了備份,所以沒有任何傷害。我究竟做錯了什麼?刪除24小時前發生時間戳的所有字段
deleted
是Int(10) unsigned default 0
和php的time()
用於存儲時間。
DELETE FROM players WHERE deleted < (unix_timestamp(now()) - 86400000)
這應該刪除所有24小時前刪除的玩家。但是這刪除了我的整個球員表。幸運的是我在測試之前進行了備份,所以沒有任何傷害。我究竟做錯了什麼?刪除24小時前發生時間戳的所有字段
deleted
是Int(10) unsigned default 0
和php的time()
用於存儲時間。
DELETE FROM players WHERE deleted < (unix_timestamp(now()) - 86400000)
一個(最明顯的)問題是,MySQL的unix_timestamp
功能,因爲時代,不毫秒開始返回的秒數。
24小時內只有86,400秒。您擁有的文字代表1000天。
我的方法是在DATETIME上做日期算術,然後轉換結果。
UNIX_TIMESTAMP(NOW() - INTERVAL 24 HOUR)
注:
你可以測試謂詞SELECT語句(即WHERE子句),而不是一個DELETE。
24小時秒是24 * 60 * 60 = 86400
Linux的時間是自紀元秒因此,如果這是存儲在已刪除INT(10)列然後那麼該語句應的值:
DELETE FROM players WHERE deleted <(unix_timestamp(now()) - 86400)