2011-06-20 23 views
10

मैं एक MySQL क्वेरी कि पुराने संपत्ति लिस्टिंग नष्ट करने के लिए हर 30 मिनट में क्रॉन के माध्यम से चलाता है है, क्वेरी है: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 है जब मेरे पासहै लिस्टिंग को हटाने के लिएक्वेरी चलने के लिए वर्तमान समय से 48 घंटे या उससे अधिक के बराबर होने की आवश्यकता है, यह नहीं हो रहा है, क्वेरी सिर्फ यह कहती है कि "यह दूसरा दिन है, लिस्टिंग हटाएं" ताकि यह हटा दिया जा सके और यह हो सकता है जब सिर्फ ढाई घंटे पुराना हो, तो मैं इसे 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

नोट: DELETE प्रयास करने से पहले का उपयोग करें चुनें

+0

धन्यवाद, मैं इसे लेता हूं, इसका मतलब है कि इस तरह से कुछ 'wpdb-> पोस्ट हटाएं जहां पोस्ट_type =' किराया 'और TIMEDIFF (अब(), post_date_gmt)> = 48' यदि नहीं तो मैं कैसे पता लगा सकता हूं (शब्दों के लिए डमीज) डेल्टा को कैसे कार्यान्वित करें? .. – MartinJJ

+0

आपके समय VGE के लिए बहुत बहुत धन्यवाद, उत्तर के रूप में चिह्नित और आपके लिंक का पालन करें – MartinJJ

0

आप DATEDIFF(NOW(), post_date_gmt) >= 3 और यह 48 और आधे घंटे वर्ष