根据时间从SQLite(Android)中删除行

时间:2011-12-20 14:56:34

标签: android sqlite

我在这里看到了一些类似的问题,但是他们都没有帮助,所以我想我是否能得到一些个性化的帮助。我正在使用名为'time_added'的列添加到我的数据库中,该列的格式为:

2011-12-20 09:55:28

然后我根据时间调用我写的删除方法,目前我只想删除所有内容:

StringBuilder queryString = new StringBuilder("date('now') < date('");
queryString.append(KEY_TIME).append("')"); //.append("','+0 days')");
int c = mDatabase.delete(DATABASE_TABLE,  queryString.toString(), null)

所以现在它打印一个WHERE子句,说:

date('now') > date('time_added')

我认为这意味着现在之前的所有内容都将被删除,但也许我错了。谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

我记得在执行此操作时遇到了一些麻烦。我不记得为什么,但是日期命令似乎没有合作。我只是在日期格式上使用字符串比较。这是我最终使用的代码。它似乎工作正常。

    // Range to cleanup anything in the DB that is older than 2 days
    //
    // NOTE: This value must be negative so that when it gets added to the
    // current date, it sets the range as anything older than 2 days ago
    int rangeInDays = -2;

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    Calendar range = Calendar.getInstance();
    range.add(Calendar.DAY_OF_MONTH, rangeInDays);

    int numDeleted =
        mDatabase.delete(DATABASE_TABLE, "time_added" + " < '"
                    + dateFormat.format(range.getTime()) + "'", null);

答案 1 :(得分:1)

我会使用getTimeInMilliseconds()将您的日期存储为整数。它使比较更容易,意味着您不必担心国际日期格式。