2012-08-02 82 views
12

我想刪除表MYTABLE中x天以前的所有行。列SAVE_DATE長是行插入表中的時間。刪除x天以前的android sqllite行

我嘗試這樣做,但顯然它刪除我的所有行:

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

有什麼不對?

謝謝你幫助我。

回答

26

下面的查詢將刪除超過2天的數據舊:

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

因爲它是在谷歌對於初學者一些更多的解釋第一擊:
你不從主程序所需要的時間/日期函數您用於訪問sqlite數據庫,但直接使用sqlite數據函數。

您創建表的年齡與行條目,例如:

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

你寫它與

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

我在這裏使用的「日期時間」,因爲這也將讓你稍後搜索小時/分鐘/秒。如果你不需要'日期'('現在')'就夠了。

下面是日期功能的說明:https://www.sqlite.org/lang_datefunc.html

要選擇一切比例如,5分鐘之前的較早:

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

您可以在上面的段落「看多了這些可能性的網站上修飾符'。