Android 无法使用sqlite查询获取过去两个月的数据

Android 无法使用sqlite查询获取过去两个月的数据,android,database,sqlite,android-studio,cursor,Android,Database,Sqlite,Android Studio,Cursor,我使用下面的代码来获取过去两个月的数据 public List<String> getDates() { SQLiteDatabase db = this.getReadableDatabase(); List<String> dateList = new ArrayList<>(); String query = "SELECT DISTINCT " + KEY_PROGRESSDATE +

我使用下面的代码来获取过去两个月的数据

 public List<String> getDates() {
        SQLiteDatabase db       = this.getReadableDatabase();
        List<String>   dateList = new ArrayList<>();

        String query = "SELECT DISTINCT " + KEY_PROGRESSDATE + " FROM " + TABLE_ENTRY + " WHERE progressdate >= date('now','start of month','-1 month') AND progressdate < date('now','start of month') desc";

        Cursor c = db.rawQuery(query, null);
        if (c.getCount() > 0) {
            while (c.moveToNext()) {
                dateList.add(c.getString(0));
            }
        }
        return dateList;
    }
public List getDates(){
SQLiteDatabase db=this.getReadableDatabase();
List dateList=new ArrayList();
String query=“从“+表项+”中选择不同的“+KEY\u PROGRESSDATE+”,其中PROGRESSDATE>=date('now'、'start of month'、'-1 month')和PROGRESSDATE0){
while(c.moveToNext()){
add(c.getString(0));
}
}
返回日期表;
}
但是我得到了下面的错误信息

原因:android.database.sqlite.SQLiteException:靠近“desc”: 语法错误(代码1):,编译时:选择不同的progressdate 从progressdate>=日期('now'、'start of month'、'-1'的条目开始 月)和progressdate
为什么会这样?

对于此异常,您必须按“Columname”DESC编写
顺序

在这里,就像

SELECT DISTINCT progressdate FROM entry WHERE progressdate >= date('now','start of month','-1 month') AND progressdate < date('now','start of month') ORDER BY progressdate desc
从progressdate>=date('now'、'start of month'、'-1 month')和progressdate

选中“查询中未使用任何ORDERBY子句”。也许你想把日期按降序排列

String query = "SELECT DISTINCT " + KEY_PROGRESSDATE + " FROM " + TABLE_ENTRY + " WHERE progressdate >= date('now','start of month','-1 month') AND progressdate < date('now','start of month') ORDER BY progressdate desc";
String query=“从“+TABLE\u ENTRY+”中选择不同的“+KEY\u PROGRESSDATE+”,其中PROGRESSDATE>=date('now'、'start of month'、'-1 month')和PROGRESSDATE
嘿,如果函数已经存在,为什么要使用原始查询呢。尝试以下函数从任何表中获取值,只需在其中传递参数:

public String[] getValues(boolean b, String table, String column,
                              String where, String orderBy) {
        ArrayList<String> savedAns = new ArrayList<String>();
        Cursor result = null;
        String[] y;
        try {
            result = db.query(b, table, new String[]{column}, where, null,
                    null, null, orderBy, null);
            if (result.moveToFirst()) {
                do {
                    savedAns.add(result.getString(result.getColumnIndex(column)));
                } while (result.moveToNext());
            } else {
                return null;
            }
            y = savedAns.toArray(new String[result.getCount()]);
        } finally {
            result.close();
        }
        return y;
    }
public String[]getValues(布尔b、字符串表、字符串列、,
字符串where,字符串orderBy){
ArrayList savedAns=新的ArrayList();
游标结果=空;
字符串[]y;
试一试{
result=db.query(b,表,新字符串[]{column},其中,null,
null,null,orderBy,null);
if(result.moveToFirst()){
做{
add(result.getString(result.getColumnIndex(column));
}while(result.moveToNext());
}否则{
返回null;
}
y=savedAns.toArray(新字符串[result.getCount()]);
}最后{
result.close();
}
返回y;
}

希望对您有所帮助。

尝试此操作从progressdate>=date(“现在”、“月初”、“1个月”)和progressdate