我想删除表MYTABLE中超过x天的所有行。列SAVE_DATE长是在表中插入行的时间。
我试过了,但显然它删除了我的所有行:
long daysInMiliSec = new Date().getTime() - X
* (24L * 60L * 60L * 1000L);
return db.delete(MYTABLE , SAVE_DATE
" <= ?", new String[] { "" + daysInMiliSec }
有什么问题?
答案 0 :(得分:10)
因为这是谷歌的第一次打击,对初学者有更多解释:
您不需要用于访问sqlite DB的主程序中的时间/日期函数,而是直接使用sqlite日期函数。
您可以使用例如的行条目创建表格:
CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER)
你用
写信给它INSERT INTO test (text, age) VALUES ("bla", datetime('now'))
我在这里使用了&date;&#39; datetime&#39;因为这也会让你以后搜索小时/分钟/秒。如果你不需要那个日期(&#39;现在&#39;)&#39;就够了。
以下是日期函数的说明:https://www.sqlite.org/lang_datefunc.html
选择比例如5分钟更早的所有内容:
SELECT * FROM test WHERE age <= datetime('now', '-5 minutes')
您可以在上面的网站上的修饰符&#39;
中看到更多这些可能性。答案 1 :(得分:1)
以毫秒或纪元整数存储时间戳或日期字段时,删除超过2天的数据。
DELETE FROM update_log WHERE timestamp <= strftime('%s', datetime('now', '-2 day'));
答案 2 :(得分:0)
使用最新版本的ORMLite for SQLite Android:http://ormlite.com/sqlite_java_android_orm.shtml,您可以使用以下代码实现此目的:
String sql = "DELETE FROM graph WHERE time <= 1522405117";
dbHelper.getWritableDatabase().execSQL(sql);