2012-08-02 17 views
12

Tüm satırları MYTABLE tablosundan x günden eski olan tablolardan silmek istiyorum. SAVE_DATE Sütun Uzun, satırın tabloya eklendiği zamandır. android sqllite satırlarının x gün öncesinden silinmesi

Bu çalıştı ama görünüşe göre hepsi benim satırları siler:

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

?

Bana yardım ettiğin için teşekkür ederim. o google başlayanlar için biraz daha açıklama ilk hit yana

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

cevap

26

2 günden daha Veriler, yaşlı silecektir Sen ana programdan saat/tarih fonksiyonları gerekmez
sen sqlite DB'ye erişmek için kullanın, ancak sqlite tarih işlevlerini doğrudan kullanın.

Sen ile yaşa satır girişi ile tablo oluşturmak örneğin:

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

Sen Burada

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

bu da izin verecek çünkü 'datetime' kullanılmış olan buna yazma Daha sonra saat/dakika/saniye ara. Eğer buna ihtiyacınız yoksa 'tarih' ('şimdi') yeterlidir. Yukarıdaki paragrafta 'başlığı altında web sitesinde bu olasılıklara daha görebilirsiniz

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

: https://www.sqlite.org/lang_datefunc.html

örnek 5 dakika daha eski olan her şeyi seçmek için: Burada

tarih fonksiyonu için bir açıklama var Değiştiriciler '.

İlgili konular