1

我正在做一个项目,现在我被困在一个奇怪的阶段。

我知道我们可以执行任何必须对数据库执行任何操作的查询,我们可以使用以下方法编写:

Cursor cursor = db.rawQuery("SELECT * FROM table_name", null);

但现在我想执行这个查询:

"SELECT strftime('%s','now','-2 day')"

一般上述查询返回前天的unixepoch时间

有谁知道我该怎么做?

4

2 回答 2

1
Date date = new Date();

将返回当前日期,如果然后减去 X 天数,然后将该日期解析为具有所需格式的字符串。您可以使用以下方法执行此操作SimpleDateFormat

String newDate = new SimpleDateFormat(pattern).format(date);

模式可以是这样的"dd-MM-yyyy"

然后,您可以将所述日期添加到您的查询中。

于 2015-10-01T20:45:05.553 回答
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
...

请注意,对于返回单个值的查询,有一个辅助函数

long seconds = DatabaseUtils.longForQuery(
                   db, "SELECT strftime('%s','now','-2 day')", null);
于 2015-10-02T07:45:12.777 回答