簡體   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