Sqlite日期列检索错误

时间:2017-04-25 12:34:37

标签: android sqlite date datetime date-format

我在Android中使用数据库操作。有一个名为"RECORDS"的表,它在我的数据库中有一列RECORD_DATE作为DATE数据类型。 我使用yyyy-MM-dd格式将日期数据插入表中。

现在问题是,我想检索特定月份的记录数据。

SELECT aet.RECORD_ID , aet.RECORD_DATE , aet.RECORD_TYPE , aet.RECORD_INFO FROM
RECORDS aet WHERE strftime('%m', aet.RECORD_DATE) = '03'  

其中03是取自用户的月份编号。

此查询返回0行,任何人都可以帮我解决这个问题吗?

表格数据图片: TABLE DATA

android代码:

public ArrayList<RecordsModel> getRecordsData(int selectedMonth) {

    ArrayList<RecordsModel> arrayListRecordsModel = new ArrayList<>();

    try {

        String selectQuery = "SELECT aet.RECORD_ID , aet.RECORD_DATE , aet.RECORD_TYPE  aet.RECORD_INFO FROM RECORDS aet WHERE strftime('%m',  aet.RECORD_DATE ) = ' "+(selectedMonth+1)+" ' ";

        db = this.getWritableDatabase();
        cursor = db.rawQuery(selectQuery, null);


        if (cursor.moveToFirst()) {
            do {

                model = new RecordsModel();

                model.setId(cursor.getInt(0));
                model.setDate(cursor.getString(1));
                model.setType(cursor.getString(2));
                model.setInfo(cursor.getString(3));

                arrayListRecordsModel.add(model);

            } while (cursor.moveToNext());
        }

        db.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return arrayListRecordsModel;

}

1 个答案:

答案 0 :(得分:0)

问题是所选月份输入两侧的空格

strftime('%m',  aet.RECORD_DATE ) = ' "+(selectedMonth+1)+" ' ";
                                     ^                     ^

当您将所选月份搜索为03并搜索为时 strftime('%m', aet.RECORD_DATE) = ' 03 '所以它没有返回结果

将代码重写为

strftime('%m',  aet.RECORD_DATE ) = '"+(selectedMonth+1)+"'";