我正在开展一个项目,现在我陷入了一个奇怪的阶段。
我知道我们可以使用以下命令执行任何必须对数据库执行任何操作的查询:
Cursor cursor = db.rawQuery("SELECT * FROM table_name", null);
但现在我想执行此查询:
"SELECT strftime('%s','now','-2 day')"
通常,上述查询会返回前一天的unixepoch时间。
有谁知道如何完成这项工作?
答案 0 :(得分:1)
Date date = new Date();
将返回当天,如果您再减去X天数,则将该Date解析为具有所需格式的String。您可以使用方法SimpleDateFormat
执行此操作:
String newDate = new SimpleDateFormat(pattern).format(date);
其中pattern可以是这样的"dd-MM-yyyy"
然后,您可以在查询中添加所述日期。
答案 1 :(得分:1)
您可以像处理任何其他查询一样处理此查询:
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
...
请注意,对于返回单个值的查询,有一个helper function:
long seconds = DatabaseUtils.longForQuery(
db, "SELECT strftime('%s','now','-2 day')", null);