mysql - 删除时间戳发生在 24 小时或更早之前的所有字段

标签 mysql

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

deletedInt(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/

相关文章:

mysql - 哪种 Ruby ORM 更好或更适合使用?

mysql - 根据数值差异选择

C# MySQL无法连接到ubuntu服务器

mysql - 根据 Woocommerce 中的日期批量更改订单状态

php - 在单个查询中更新多行php mysql

mysql - 如何避免使用 AUTO_INCRMENT 重写属性

php - 'Date' 中的未知列 'where clause'

mysql - 解释查询在 oracle 数据库中不起作用

mysql - 具有两个引用的主键

mysql - 为什么MySql在进行建表DDL时提示字段名是保留关键字?