strftime 函数在 android 中未从 sql 数据库中检索任何记录

strftime function doesn't retrieve any records from sql database in android

我正在创建一个包含 3 个字段类别(文本)、金额(整数)和日期(日期)的费用 table。

    String CREATE_EXPENSE_TABLE = "CREATE TABLE " + Constants.EXPENSE_TABLE_NAME + "("
            + Constants.ID_KEY + " INTEGER PRIMARY KEY," + Constants.EXPENSE_CATEGORY + " TEXT,"
            + Constants.EXPENSE_AMOUNT + " INTEGER," + Constants.EXPENSE_DATE + " DATE" +  ")";
    db.execSQL(CREATE_EXPENSE_TABLE);

我正在使用 DatePicker 从用户那里获取日期并将其保存到数据库中,如下所示:

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(Constants.EXPENSE_DATE, expense.getDate().getTimeInMillis());

我想检索特定月份的费用,为此我使用 strf()

Cursor cursor = db.rawQuery("select amount from Expense where strftime('%m', date) = '7'", null);

但是没有返回任何记录。

我对 strf() - year 参数进行了同样的尝试

 Cursor cursor = db.rawQuery("select amount from Expense where strftime('%Y', date) = '2017'", null);

还是没有记录。

我在这里做错了什么。请指导我。

您需要将日期值存储为字符串格式。 以下是在数据库中存储日期的有效格式。

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD