mysql - 如果时间超过 4 小时,则从数据库中删除

标签 mysql sql timestamp sql-delete

如果时间戳早于 4 小时,我想删除数据库中的所有记录。

所以我的逻辑是获取当前时间的小时并从数据库中保存的时间戳中获取小时并减去以查看是否大于4。如果大于4则删除记录。

这是一个正在进行的代码,不确定它是否正确。

DELETE FROM posts
WHERE id IN 
   (SELECT *
    FROM posts
    WHERE (HOUR(CURRENT_TIMESTAMP) - HOUR(time_published)) > 4)
   )

如果有什么区别的话,我正在使用 MySQL。

最佳答案

为什么不简单一点

delete 
from posts 
where timestampdiff(hour, current_timestamp, time_published)>=4

请注意,比较日期字段的小时部分不会达到您的预期。考虑比较 1985 年 1 月 21 日 10:001985 年 1 月 22 日 11:00。您原来的条件会失败(1 小时),但实际上两者之间相差 25 小时。

关于mysql - 如果时间超过 4 小时,则从数据库中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948809/

相关文章:

r - 将时间戳(以微秒为单位)转换为 r 中的数据和时间

java - Java日期和MySQL时间戳时区

MySql - System.Data.dll 中发生类型为 'System.InvalidOperationException' 的未处理异常

MySql 导入卡住

php - 新闻提要的 SQL 内部连接

sql - MySQL - 从多个具有相同结构但不同数据的表中选择数据

mysql - 触发器采用 current_timestamp,如果早于 15 分钟,则插入到其他表中

mysql - 记录 MySQL 查询并转发到系统日志/事件日志

java - 从mysql中的多行中获取单列

mysql - 创建13行31列的表结构