我在这里看到了一些类似的问题,但是他们都没有帮助,所以我想我是否能得到一些个性化的帮助。我正在使用名为'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')
我认为这意味着现在之前的所有内容都将被删除,但也许我错了。谢谢你的帮助。
答案 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()
将您的日期存储为整数。它使比较更容易,意味着您不必担心国际日期格式。