这应该删除 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 语句而不是 DELETE 语句中测试谓词(即 WHERE 子句)。
关于mysql - 删除时间戳发生在 24 小时或更早之前的所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137953/