如何在安卓上从sqlite数据库中删除旧行?

4

我有一个参数,用户可以选择存储数据的时间段。 我将其读取到days变量中。记录添加到数据库中的日期和时间存储在KEY_DATE_ADDED中,创建方式如下:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  // sql date format
Date date = new Date();
initialValues.put(KEY_DATE_ADDED, dateFormat.format(date));

然后我接着做以下步骤:
mDb.delete(DATABASE_TABLE, 
           "date(now) > date(" + KEY_DATE_ADDED + ",+" + days + " days)",
           null);

它无法工作。 实际查询(where 部分)看起来像:

WHERE date(now) > date(date_added,+10 days)

这里有什么不正确的? 看起来应该使用其他东西而不是 date_added

我希望使用SQL数据格式化,以避免多次重新格式化日期。

是否有 Android 数据库的GUI可以测试实际数据上的 SQL 查询?


1
好的,我应该使用 date('now') > date('date_added','+10 days') - 现在它可以工作了。所以,唯一的问题就是关于GUI的。 - LA_
1
你可以使用 adb pull /data/data/<namespace>/databases/<dbName> 命令从模拟器中拉取数据库。我使用 Firefox 插件 "SQLite Manager" 来查看或编辑数据库。 - Rajath
1
我用SQLiteBrowser测试查询等内容,它非常容易使用:http://sourceforge.net/projects/sqlitebrowser/。你只需要从设备(模拟器或实际手机)中提取数据库,然后就可以随意操作了。我现在不在我的工作站上,但是通过界面提取数据库相当简单。模拟器/设备实例将SQLite3数据库存储在文件夹/data/data/<package_name>/databases/中。也可以参考这个问题:https://dev59.com/C3A75IYBdhLWcg3wdIp0。 - Codemonkey
2个回答

3

好的,我应该使用date('now') > date('date_added','+10 days')

意思是当前日期是否晚于添加日期加上10天。

我猜应该是 date('now') > date(date_added,'+10 days') - tacone

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接