2013-07-25 2 views
0

Я разрабатываю приложение для Android, где я ищу записи, созданные после указанной даты. Мой код некоторые вещи, как этотSQLite date query возвращает запись

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, он вернет дезактивированную запись.

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

Любая помощь будет принята с благодарностью. Спасибо

+0

Пожалуйста, включите соответствующую часть вашей схемы и данные в этой таблице. И, пожалуйста, уберите все, что вам не нужно, чтобы воспроизвести вашу проблему. –

+0

Что произойдет, если вы опустите дату, где статья в приложении для Android? –

+0

@Frank, без даты я получаю желаемую запись. – Dibs

ответ

0

Неверное значение параметра (в lastdt).

Что вы хотите, это строка 2013-07-25 18:59:19, но на самом деле вы используете строку datetime(2013-07-25 18:59:19). Письмо d приходит после 2, поэтому никаких совпадений нет.

Изменение инициализации lastdt в:

String lastdt=LastDtTime; 
+0

Я пытаюсь получить KEY_RCRD_CRN_DATE больше, чем LastDtTime, переданный как параметр. В моем случае 2013-07-25 18:59:19 (KEY_RCRD_CRN_DATE)> 2013-07-25 14:46:03 (LastDtTime), поэтому функция должна получить запись. – Dibs

+0

В вашем коде 'lastdt' не совпадает с' LastDtTime'. Вы должны удалить 'datetime'. –

+0

Он работает. Благодарю. Означает ли это, что дата sqlite работает в сравнении строк? Удивление, почему datetime (KEY_RCRD_CRN_DATE)> datetime (LastDtTime) не работает – Dibs