删除24小时或更长时间之前发生时间戳的所有字段

时间:2013-11-22 05:53:20

标签: mysql

这应该删除超过24小时前删除的所有玩家。但这删除了我的整个球员表。幸运的是我在测试之前做了一个备份,所以没有任何伤害。我做错了什么?

deletedInt(10) unsigned default 0,php的time()用于存储时间。

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

2 个答案:

答案 0 :(得分:0)

一个(最明显的)问题是MySQL unix_timestamp函数返回自纪元开始以来的秒数,而不是毫秒。

24小时内只有86,400秒。你的文字代表1000天。

我的方法是在DATETIME上进行日期算术,然后转换结果。

UNIX_TIMESTAMP( NOW() - INTERVAL 24 HOUR )

注意:

您可以在SELECT语句中测试谓词(即WHERE子句),而不是DELETE。

答案 1 :(得分:0)

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

Linux时间是epoch以来的秒数,所以如果这是存储在deleted int(10)列中的值,那么语句应为:

DELETE FROM玩家WHERE删除&lt; (unix_timestamp(now()) - 86400)