我有一个SQLite数据库,该数据库的任务表包含一列dueDates。我想过滤掉明天的日期之后的日期。
如果明天的日期是4月29日,我应该得到明天以后的日期。我想获取明天以后的任务数。
为此,我已将字符串转换为日期。格式为:
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 int getPendingTasksLaterDays(String tomorrow) {
ArrayList<Task> conList = new ArrayList<Task>();
String selectQuery = "SELECT * FROM " + TASK_TABLE + " WHERE " + KEY_TASK_STATUS + " = 1" + " AND " + KEY_DUE_DATE + " > '" + tomorrow + "'" ;
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;
}
但是查询不适用于我。我得到的计数是0。
我做错了什么?
最佳答案
您的查询可以使用SQLite中的date
函数在明天之后查找所有内容,但是前提是您已正确地至少以YYYY-MM-DD
格式存储了到期日列。 (其他格式在链接中)。
SELECT COUNT(*) FROM tasks WHERE due_date > date('now', '+1 day');
如果您没有将日期正确存储在数据库中,那么可以,您很可能会得到0个结果。
还值得一提的是,您可以使用
getCount
方法从Cursor获取结果数,而无需COUNT(*)
int count = db.rawQuery(selectQuery,null).getCount();
关于android - 明天以后如何获得行数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36918586/