我在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;
}
答案 0 :(得分:0)
问题是所选月份输入两侧的空格
strftime('%m', aet.RECORD_DATE ) = ' "+(selectedMonth+1)+" ' ";
^ ^
当您将所选月份搜索为03并搜索为时
strftime('%m', aet.RECORD_DATE) = ' 03 '
所以它没有返回结果
将代码重写为
strftime('%m', aet.RECORD_DATE ) = '"+(selectedMonth+1)+"'";