我试图将当前日期与另一个日期进行比较,存储在SQLite数据库列中,并选择这些日期之间的每一行。
我无法理解为什么我的查询无效。
@Override
public int getFamiliesClientsTotalNum() {
String countQuery = "SELECT * FROM " + SQLiteHelper.FAMILIES_SERVICES_TABLE_TITLE + " WHERE DATE("
+ SQLiteHelper.FAMILIES_SERVICES_DATE
+ ") >= DATE('" + new SimpleDateFormat("yyyy-MM-dd").format(mStartDate)
+ "') AND DATE(" + SQLiteHelper.FAMILIES_SERVICES_DATE
+ ") <= DATE('" + new SimpleDateFormat("yyyy-MM-dd").format(mFinishDate) + "')";
Cursor cursor = mSQLiteHelper.getReadableDatabase().rawQuery(countQuery, null);
int cnt = 0;
while(cursor.moveToNext()){
Log.i(TAG, "countQuery: " + countQuery);
Log.i(TAG, "today is: " + new SimpleDateFormat("yyyy-MM-dd").format(mStartDate));
cnt++;
}
cursor.close();
return cnt;
}
答案 0 :(得分:1)
由于您传递的是value
(由Date()
函数返回)而不是column name
,因此无法正常工作:
... DATE(" + SQLiteHelper.FAMILIES_SERVICES_DATE + ") ...
这就像写作
... WHERE Date(MyDateColumn) = '2016-04-08' ...
确实必须是这样的:
..." + SQLiteHelper.FAMILIES_SERVICES_DATE + "...
没有使用Date()
函数。
就像(正确)写作
... WHERE MyDateColumn = '2016-04-08' ...
注意:您在查询中两次犯了同样的错误。
<强> [编辑] 强>
使用BETWEEN ... AND ...
运算符可以更好(也更容易阅读),用于指定日期范围:
... WHERE MyDateColumn BETWEEN '2015-04-08' AND '2016-04-08' ...