gpt4 book ai didi

android - 在 SQLite 中比较日期的问题

转载 作者:行者123 更新时间:2023-11-30 01:25:15 25 4
gpt4 key购买 nike

我正在尝试将当前日期与存储在 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;
}

最佳答案

它不起作用,因为您传递的是 (由 Date() 函数返回)而不是 列名:

... 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' ...

关于android - 在 SQLite 中比较日期的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com