Я сталкиваюсь с огромными проблемами с выполнением запросов, связанных с датами, в локальной базе данных SQLite, пожалуйста, оцените вашу помощь по этому вопросу!
Я пытаюсь получить все события, у которых есть дата события в течение данного года и месяца,Для этого я вычислил первую дату и последнюю дату этого месяца, а затем запросил, где дата события находится в этом диапазоне.
В моих тестовых данных используется: 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, он также работает странно, курсор нулевойвместо этого. </p>
Пожалуйста, помогите мне, если у вас есть какие-либо подсказки об этом!
// 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;
}