2012-08-02 11 views
12

मैं टेबल MYTABLE में सभी पंक्तियां हटाना चाहता हूं जो x दिनों से पुराने हैं। कॉलम SAVE_DATE लंबा वह समय है जब पंक्ति तालिका में डाली गई थी।x दिनों से पुराने एंड्रॉइड स्क्लेइट पंक्तियों को हटाने

मैं इस कोशिश की, लेकिन जाहिरा तौर पर यह मेरे सभी पंक्तियों को हटा देता है:

long daysInMiliSec = new Date().getTime() - X 
      * (24L * 60L * 60L * 1000L); 
return db.delete(MYTABLE , SAVE_DATE 
      " <= ?", new String[] { "" + daysInMiliSec } 

क्या गलत है?

मेरी मदद करने के लिए धन्यवाद।

String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; 
db.execSQL(sql); 

उत्तर

26

क्वेरी नीचे 2 दिन से डेटा पुराने नष्ट करेगा
आप मुख्य कार्यक्रम से समय/तिथि कार्यों की जरूरत नहीं है आप एसक्लाइट डीबी तक पहुंचने के लिए उपयोग करें लेकिन सीधे एसक्लाइट डेट फ़ंक्शंस का उपयोग करें।

आप के साथ उम्र के लिए पंक्ति प्रवेश के साथ तालिका बनाने के उदाहरण के लिए:

CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER) 

आप

INSERT INTO test (text, age) VALUES ("bla", datetime('now')) 

यहाँ मैं 'दिनांक' का इस्तेमाल किया क्योंकि यह भी आप दूँगी के साथ यह करने के बारे में बाद में घंटे/मिनट/सेकंड के लिए खोजें। यदि आपको उस तारीख की आवश्यकता नहीं है ('अब') 'पर्याप्त है।

SELECT * FROM test WHERE age <= datetime('now', '-5 minutes') 

आप पैरा 'के तहत ऊपर वेबसाइट पर उन संभावनाओं के अधिक देख सकते हैं: https://www.sqlite.org/lang_datefunc.html

उदाहरण 5 मिनट के लिए सब कुछ से अधिक उम्र के चयन करने के लिए:

यहाँ तिथि समारोह के लिए एक स्पष्टीकरण है संशोधक '।

10

चूंकि यह गूगल शुरुआती के लिए कुछ और स्पष्टीकरण पर पहला हिट है::

संबंधित मुद्दे