ローカルのSQLiteデータベースで日付関連のクエリを実行する際に大きな問題に直面しています。Android SQLite日付クエリの問題、2つの日付間でレコードを比較できない
私は、特定の年と月内にeventdateを持つすべてのイベントを取得しようとしています。これを行うには、その月の最初の日付と最後の日付を計算し、イベントの日付がこの範囲内のどこにあるかを照会しました。
私のテストデータが使用: のString [] testEventDates = { "2011-12-17"、 "2012-02-25"、 "2012-01-10"、 "2012-01-01"、 " 「2011-12-24」、「2012-02-25」}
しかし、以下のクエリを実行すると、これらのエントリがすべて取得されますが、これは間違っています。私のクエリは、(SELECT ... WHERE) "eventDate> =" + firstDayです。
私は他の制限を追加し、 "AND『EVENTDATE <』+ LASTDAY、 それも不気味に動作し、カーソルが代わりにnullである。あなたがこのことについてどんな手掛かりを持っている場合
私を助けてください!
// fetch events by month, between first and last days calculated
public Cursor fetchEventsByMonth(int month, int year) {
String firstDay, lastDay, correctedMonth;
if (month == 12) {
lastDay = Integer.toString(year+1) + "-01-01";
} else{
if (month+1 < 10) {
correctedMonth = "0" + Integer.toString(month+1);
} else correctedMonth = Integer.toString(month+1);
lastDay = Integer.toString(year) + "-" + correctedMonth
+ "-01";
}
if (month < 10) {
correctedMonth = "0" + Integer.toString(month);
} else correctedMonth = Integer.toString(month);
firstDay = Integer.toString(year) + "-" + correctedMonth + "-01";
firstDay = "2012-02-25";
Cursor mCursor =
mDb.query(DATABASE_TABLE_EVENTS, new String[] { KEY_EID, KEY_ENAME,
KEY_EINTERESTS, KEY_EBENS, KEY_EDATE, KEY_ETIME, KEY_EVHO, KEY_EABBR,
KEY_ELOCATION, KEY_ETYPE, KEY_ENATURE, KEY_ESTATUS,
KEY_ESIGNEDUP, KEY_ECAPACITY}, "eventDate >= " + firstDay
// + " AND "eventDate < " + lastDay
, null, null, null,
"eventDate");
if (mCursor != null) mCursor.moveToFirst();
return mCursor;
}
おかげStermiする必要があります!それを今から試してみると、現在の月には動作しますが、それ以外の月にはまだ動作しません。 –
奇妙な結果: 2012年1月:2012-01-10(2012-01-01行方不明)||| 2012年2月:無制限(2012-02-25欠落)||| 2011年12月:2011-12-17、2011-12-24、 2011-12-25、2011-12-25、2011-12-26(これらの3つはDBにはありません。 〜から?) –
ありがとうstermi !!!それはうまくいく、私の奇妙な結果は私のDBが私のデバイスで時代遅れであるため、私はいつもそれを削除し、毎回新しいAVDを作成する必要があります...:p –