我有一个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/

10-12 00:30