如果时间戳超过4小时,我想删除数据库中的所有记录。
所以我的逻辑是获取当前时间的小时并从数据库中保存的时间戳中获取小时,并减去它是否大于4.如果大于4则删除记录。< / p>
这是正在进行的代码工作,并不确定它是否正确。
DELETE FROM posts
WHERE id IN
(SELECT *
FROM posts
WHERE (HOUR(CURRENT_TIMESTAMP) - HOUR(time_published)) > 4)
)
如果它有所作为我正在使用MySQL。
答案 0 :(得分:4)
为什么不是一个简单的
firstCommand | secondCommand
请注意,比较日期字段的小时部分将无法达到预期效果。考虑比较delete
from posts
where timestampdiff(hour, current_timestamp, time_published)>=4
和21st Jan 1985 10:00
。你原来的状况会失败(1小时),但它们实际上是25小时。
答案 1 :(得分:0)
如果您将记录保存在时间戳1:00&#39;并在5:59&#39;运行此查询什么都不会被删除,因为时差为4:59&#39;而小时的成分是4!它可能是你想要的,但是接近5小时而不是4小时。 假设分钟是你的最小精度单位,你可能想要做类似的事情
DELETE FROM posts
WHERE TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP, time_published) > 240
只有在绝对必要时才使用嵌套查询;他们可能会大幅减慢您的运营速度。