2011-06-20 31 views
10

我有一個通過cron每30分鐘一班,刪除舊房源信息MySQL查詢,查詢是:MySQL的DATETIME DIFF查詢

DELETE FROM $wpdb->posts WHERE post_type = 'rentals' AND DATEDIFF(NOW(), post_date_gmt) >=2 

現在它處於測試階段,並設置爲刪除當上市是2天大,這確實沒有問題,我確實有這個問題,我需要它來識別上市時間和時間應該刪除的時間,

基本上表post_date_gmt列的格式爲2011-05-26 13:10:56,列類型爲DATETIME,當我有DATEDIFF (NOW()查詢運行它需要從當前時間等於48小時或更多刪除列表,這不會發生,查詢只是似乎說「這是第二天,刪除列表」,所以它被刪除,這可能是當只有24個半小時的時候,我怎樣才能使它完全精確的48小時?

問候

+0

是否使用timeDiff測量產生相同的結果? – BugFinder

回答

17

嘗試用timeDiff的48個小時,而不是增量。 或者如果精度不是問題,則使用3天的增量。

嘗試HOUR(TIMEDIFF(NOW(), date))

SELECT count(*) FROM $wpdb->posts WHERE post_type = 'rentals' AND HOUR(TIMEDIFF(NOW(), post_date_gmt)) >=48 

有很多MySQL的日期/時間功能: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour

注:試圖刪除之前使用SELECT

+0

謝謝,我認爲你的意思是這樣的'DELETE FROM $ wpdb-> posts WHERE post_type ='rentals'AND TIMEDIFF(NOW(),post_date_gmt)> = 48'如果不是,那我該如何找出假人)如何實現三角洲?..關於 – MartinJJ

+0

非常感謝您的時間VGE,標記爲已回答並跟進您的鏈接 – MartinJJ

0

可以DATEDIFF(NOW(), post_date_gmt) >= 3,它會被刪除48個半小時的老