如果时间大于 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: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
并且只有在绝对必要时才使用嵌套查询;他们可能会大大降低您的操作速度。
如果时间戳早于 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
。您的原始条件会失败(1 小时),但它们之间实际上相差 25 小时。
如果您在时间戳 1:00' 和 运行 保存记录,此查询在 5:59' 时不会删除任何内容,因为时差为 4:59' 并且其中的小时部分是 4!这可能是您想要的,但这比 4 小时更接近 5 小时。 假设分钟是你的最小精度单位,你可能想做类似
的事情DELETE FROM posts
WHERE TIMESTAMPDIFF(MINUTE, CURRENT_TIMESTAMP, time_published) > 240
并且只有在绝对必要时才使用嵌套查询;他们可能会大大降低您的操作速度。