SQLite日期查询不返回任何记录

时间:2013-07-25 13:48:19

标签: java android sqlite datetime

我正在开发一个Android应用程序,我在其中搜索在给定日期之后创建的记录。我的代码是这样的东西

public List<NPRMember> IncrementalData(String LastDtTime) {

List<NPRMember> results = new ArrayList<NPRMember>();
SQLiteDatabase db=getMyReadableDatabase();
String lastdt="datetime("+LastDtTime+")";
Cursor cursor = null;

try{

      cursor = db.query(TABLE_NAME_NPR, new String[] { KEY_FULLNAME, KEY_FATHERNAME, 
       KEY_RCRD_SOURCE,KEY_RCRD_CRN_DATE},KEY_RCRD_CRN_DATE + ">? AND "+KEY_RCRD_SOURCE+">?",
               new String[]{lastdt, "0"}, null, null, null); 


    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
            NPRMember nprmem = cursorToMemberDetails(cursor);
            results.add(nprmem);          
            cursor.moveToNext();

    }
}catch(Exception e){
    Log.e(APP_NAME, "An error occurred while searching for "+LastDtTime+": "+e.toString(), e);
}finally{
    if(cursor!=null && !cursor.isClosed()){
        cursor.close();
    }
}

return results;

}

查询不会返回任何值,但我至少有一条记录与KEY_RCRD_CRN_DATE 2013-07-25 18:59:19 作为参数传递的LastDtTime具有值2013-07-25 14:46:03。 一个有趣的事情是,如果我在SQLite命令提示符下运行查询,它将返回deisred记录。

  SELECT fullname, fathername, .... rcrdsource, rcrdcrtndate FROM nprmembers WHERE rcrdcrtndate>'2013-07-25
 14:46:03' AND rcrdsource>0;

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

参数值(在lastdt中)是错误的。

您想要的是字符串2013-07-25 18:59:19,但实际上您正在使用字符串datetime(2013-07-25 18:59:19)。 字母d位于2之后,因此没有记录匹配。

lastdt的初始化更改为:

String lastdt=LastDtTime;