2017-04-25 102 views
0

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

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

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

我认为,在03月份在数据库中没有记录。 –

+0

@TamilSelvanC:db中有20条记录。 即使我尝试从0-12中的任何其他数字获取数据我没有得到任何行或数据。 – JavaEnthusias

+0

显示sql命令的屏幕截图'SELECT * FROM RECORDS' –

回答

0

的问题是,在选择年份输入的两侧空间

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

当你选定月份搜索为03并且它搜索为 strftime('%m', aet.RECORD_DATE) = ' 03 '因此它不返回结果

重写代码

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

嗨。 应用这些变化仍然没有得到结果。 – JavaEnthusias

+0

回声字符串selectQuery –

+0

我认为02 + 1返回3不是03,可能是这个原因问题 –