1

データベース形式「MM/dd / yyyy」で日付を保存し、特定の日付までにクエリを実行したいのですが、クエリを実行するとカーソルが何も返しません。

文字列に含まれる「/」のせいですか?そして、はい、私は日付がデータベースに適切に保存されていることを知っています

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        return new CursorLoader(getActivity(),Games.GAMES_URI,new String[] {Games.GAMES_ID},Games.GAMES_DATE + "="+dt,
                null,null);
}

日付の変換

public convertDate(Calendar date){
        mDate = date;           
        Date d = new Date(date.getTimeInMillis());
        DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
        dt = df.format(d);
}
4

1 に答える 1

1

実行しようとしているクエリは次のようになります。

... WHERE games_date=08/11/2012

必要な場所:

... WHERE games_date="08/11/2012"

(それが列の名前であると仮定しgames_dateます-必要に応じて置き換えます)

Games.GAMES_DATE + "=?"4番目のCursorLoaderコンストラクターパラメーターと{dt}5番目のコンストラクターパラメーターを試してみてください。Android/SQLiteは、SQLiteに支えられCursorLoaderていると仮定して、必要に応じて自動的に引用符を追加します。ContentProvider

また、日付を他の形式で保存することを検討することもできます。文字列にしたい場合は、yyyy-MM-dd(またはyyyy/MM/dd)を選択することをお勧めします。これは、時系列で正しくソートされるためです。文字列である必要がない場合は、列に格納するだけgetTimeInMillis()で、文字列の変換に煩わされることなく、オブジェクトINTEGERとの変換が簡単になります。Date

于 2012-08-11T21:18:22.997 に答える