2012-08-02 84 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') 

您可以在上面的段落“看多了这些可能性的网站上修饰符'。