0

値を返さない SQL クエリがありますが、返されるデータがあります。次のクエリ コード

Cursor cursor = db.query(CrimeDB.NOME_TABELA, CrimeDB.COLUNAS,
            CrimeDB.ID_CIDADE + "=" + idCidade + "" + " AND "
                    + CrimeDB.TIME + " >= datetime('" + dataInicioFormatada
                    + "') AND " + CrimeDB.TIME + " <= datetime('"
                    + dataFimFormatada + "')" + " AND "
                    + CrimeDB.GRUPO_CRIME + "=" + idCategoria + "", null,
            null, null, null);

カーソルの読み取り

if (cursor.moveToFirst()) {

        do {
            crime = new Crime();
            crime.setLastUpadateToken(ultimoTokenValido
                    .getUltimoTokenAtualizado());

            listCrime.add(itemCrime);

        } while (cursor.moveToNext());

    }

クエリ結果は次のとおりです。

    SELECT    
        grupo_crime_id_grupo_crime, 
    id_crime, 
    cities_id_cities, 
    time 
FROM 
    crime 
WHERE 
    cities_id_cities=1650 AND 
    time >= datetime('20-10-2012') AND 
    time <= datetime('22-05-2014') AND 
    grupo_crime_id_grupo_crime=1

データベースに値があるため、任意の値を実現するために戻りました。SQLite エディタを使用すると、表に犯罪記録が表示されます。

id_crime | cities_id_cities | grupo_crime_id_grupo_crime | time
1          1650               1                            28-03-2013
2          1650               1                            06-04-2013
4

3 に答える 3

1

とで日付を比較する代わりに、 で日付形式を変更してyyyy/MM/ddを使用してみてください。between>=<=

于 2013-05-08T17:07:12.230 に答える
0

where 句のチェックイン時にアポストロフィ (') を使用する

Cursor cursor = db.query(CrimeDB.NOME_TABELA, CrimeDB.COLUNAS,
            CrimeDB.ID_CIDADE + "='" + idCidade + "'" + " AND "
                    + CrimeDB.TIME + " >= datetime('" + dataInicioFormatada
                    + "') AND " + CrimeDB.TIME + " <= datetime('"
                    + dataFimFormatada + "')" + " AND "
                    + CrimeDB.GRUPO_CRIME + "='" + idCategoria + "'", null,
            null, null, null);
于 2013-05-08T16:38:49.020 に答える