删除超过x天的android SQLite行

时间:2012-08-02 05:34:19

标签: android sqlite

我想删除表MYTABLE中超过x天的所有行。列SAVE_DATE长是在表中插入行的时间。

我试过了,但显然它删除了我的所有行:

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

有什么问题?

3 个答案:

答案 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);