私はdueDatesの列を持つタスクのテーブルを持つsqliteデータベースを持っています。明日の日付よりも大きい日付を除外したいだから明日の日付が4月29日の場合は、明日より後で日付を取得する必要があります。2つの日付を比較してください。 Sqlite
これは私が文字列を日付に変換したものです。形式は次のとおりです。
Calendar calendar = Calendar.getInstance();
dateToday = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("d MMM yyyy");
dueDateToday = df.format(dateToday);
calendar.add(Calendar.DAY_OF_YEAR, 1);
dueTomorrow = calendar.getTime();
dueDateTomorrow = df.format(dueTomorrow);
とクエリがある:なし日付ありません
public ArrayList<Task> getDueDatesLater(String tomorrow) {
ArrayList<Task> conList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TASK_TABLE + " WHERE " + KEY_DUE_DATE + " > '" + tomorrow + "'" ;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Task task = new Task();
task.setId(Integer.parseInt(cursor.getString(0)));
task.setTitle(cursor.getString(1));
task.setTaskPriority(Integer.parseInt(cursor.getString(2)));
task.setAlertDate(cursor.getString(3));
task.setAlertTime(cursor.getString(4));
task.setDueDate(cursor.getString(5));
task.setDueTime(cursor.getString(6));
task.setList(Integer.parseInt(cursor.getString(7)));
task.setStatus(Integer.parseInt(cursor.getString(8)));
task.setAlertId(Integer.parseInt(cursor.getString(9)));
conList.add(task);
} while (cursor.moveToNext());
}
return conList;
}
が、私はリストを取得しています0として。たぶん私の質問は間違っています。助けてください。
EDIT:推奨されています。
public ArrayList<Task> getDueDatesLater(String tomorrow) {
ArrayList<Task> conList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TASK_TABLE ;
Date dueDate,tomorrowDate;
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat();
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
try {
if (cursor.moveToFirst()) {
do {
Task task = new Task();
task.setId(Integer.parseInt(cursor.getString(0)));
task.setTitle(cursor.getString(1));
task.setTaskPriority(Integer.parseInt(cursor.getString(2)));
task.setAlertDate(cursor.getString(3));
task.setAlertTime(cursor.getString(4));
task.setDueDate(cursor.getString(5));
task.setDueTime(cursor.getString(6));
task.setList(Integer.parseInt(cursor.getString(7)));
task.setStatus(Integer.parseInt(cursor.getString(8)));
task.setAlertId(Integer.parseInt(cursor.getString(9)));
dueDate = simpleDateFormat1.parse(task.getDueDate());
tomorrowDate = simpleDateFormat1.parse(tomorrow);
if (dueDate.getTime() > tomorrowDate.getTime()) {
conList.add(task);
}
Log.d("laterQuery", selectQuery);
//conList.add(task);
} while (cursor.moveToNext());
}
}
catch (ParseException e) {
}
return conList;
}
それでもリストは0
私は後で明日より日数を持っているどのくらいのタスクの数を取得したいそれを返します。
public int getPendingTasksLaterDays(String tomorrow) {
ArrayList<Task> conList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TASK_TABLE + " WHERE " + KEY_TASK_STATUS + " = 0";
Date dueDate,tomorrowDate;
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("d MMM yyyy", Locale.ENGLISH);
SQLiteDatabase db = this.getWritableDatabase();
Cursor mCount= db.rawQuery(selectQuery,null);
if (mCount.moveToFirst()) {
do {
count = mCount.getInt(0);
} while (mCount.moveToNext());
}
Log.d("query",selectQuery);
Log.d("count",String.valueOf(count));
mCount.close();
return count;
}
これを追加するには?
あなたの機能を実現しますDBテーブルに保存? –
形式はd MMM yyyyです。 @ Rohitashv jain –
あなたの日付比較が失敗したかどうかを比較したり、sqliteのクエリを適用する? –