繁体   English   中英

如果时间大于4小时,则从数据库中删除

[英]Delete from database if time is greater than 4 hours

如果时间戳早于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

请注意,比较日期字段的小时部分不会达到您的期望。 考虑比较21st Jan 1985 10:0022nd Jan 1985 11:00 21st Jan 1985 10:00 22nd Jan 1985 11:00 您的原始条件会失败(1小时),但实际上间隔了25小时。

如果您将记录保存在时间戳1:00'并在5:59'运行此查询,则不会删除任何内容,因为时差为4:59',小时部分为4! 这可能是您想要的,但是比4少了5个小时。假设分钟是最小的精度单位,则可能需要执行以下操作

DELETE FROM posts
WHERE TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP, time_published) > 240

并且仅在绝对必要时才使用嵌套查询; 他们可能会大大降低您的操作速度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM