[英]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:00
和22nd 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.