我正在尝试使用以下代码删除一天前的数据行。
mysqli_query($this->db,"DELETE FROM posts WHERE UNIX_TIMESTAMP(created)<=DATE_SUB(NOW(), INTERVAL 1 DAY)") or die(mysqli_error($this->db));
但它不是 1 天前每次都删除所有行。我在这里做错了什么?
最佳答案
自 created
列显然已经以秒为单位,要比较您应该使用的日期 FROM_UNIXTIME(created)
而不是 UNIX_TIMESTAMP(created)
在 MySQL 查询中。参见,例如:https://www.w3resource.com/mysql/date-and-time-functions/mysql-from_unixtime-function.php并与 https://www.w3resource.com/mysql/date-and-time-functions/mysql-unix_timestamp-function.php 进行比较.
如果要删除一天前清除的所有行,则WHERE
条件 <=DATE_SUB(NOW(), INTERVAL 1 DAY)
条件还可以。但是,如果您只想删除 1 天前清除的行,同时保留 1 天前创建的行,则可以使用 =DATE_SUB(NOW(), INTERVAL 1 DAY)
相反。
所有这些都假设被比较日期的时区设置为相同。
关于php - 1 天后自动删除行不会使用 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46752081/