[英]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.