我正在做一个项目,现在我被困在一个奇怪的阶段。
我知道我们可以执行任何必须对数据库执行任何操作的查询,我们可以使用以下方法编写:
Cursor cursor = db.rawQuery("SELECT * FROM table_name", null);
但现在我想执行这个查询:
"SELECT strftime('%s','now','-2 day')"
一般上述查询返回前天的unixepoch时间。
有谁知道我该怎么做?
我正在做一个项目,现在我被困在一个奇怪的阶段。
我知道我们可以执行任何必须对数据库执行任何操作的查询,我们可以使用以下方法编写:
Cursor cursor = db.rawQuery("SELECT * FROM table_name", null);
但现在我想执行这个查询:
"SELECT strftime('%s','now','-2 day')"
一般上述查询返回前天的unixepoch时间。
有谁知道我该怎么做?
Date date = new Date();
将返回当前日期,如果然后减去 X 天数,然后将该日期解析为具有所需格式的字符串。您可以使用以下方法执行此操作SimpleDateFormat
:
String newDate = new SimpleDateFormat(pattern).format(date);
模式可以是这样的"dd-MM-yyyy"
然后,您可以将所述日期添加到您的查询中。
您可以像处理任何其他查询一样处理此查询:
Cursor cursor = db.rawQuery("SELECT strftime('%s','now','-2 day')", null);
try {
if (cursor.moveToFirst()) {
long seconds = cursor.getLong(0);
...
} else {
// cannot happen with this query
}
} finally {
cursor.close();
}
如果您想按名称访问列(如果您只有一个列,这完全没有意义),您可以给它一个别名:
cursor = db.rawQuery("SELECT strftime(...) AS s", null);
cursor.getColumnIndexOrThrow("s"); // returns zero
...
请注意,对于返回单个值的查询,有一个辅助函数:
long seconds = DatabaseUtils.longForQuery(
db, "SELECT strftime('%s','now','-2 day')", null);