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