Android SQLite 查询从时间字符串列中获取不同的年份值
Android SQLite Query get distinct Year values from Timestring Column
我有一个带有列 "KEY_DATUM" 的 SQLite 数据库,它是一个格式为 "YYYY-mm-dd".
的字符串
现在我想知道我在哪些年份有条目,所以从我的数据库中获取不同的年份。
我已经尝试了下面的查询,但我仍然得到重复的值。
有人发现我的错误吗?
提前致谢!
public ArrayList<String> getAlleJahreSpinner() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(
true, //boolean distinct
TABLE_BIER, // String Table
columns, // String[] columns
"strftime('%Y'," + KEY_DATUM + ")", // String selection
null, // String[] selectionargs
KEY_DATUM, // String groupBy
null, // String having
KEY_DATUM, // String orderBy
null); // String limit
ArrayList<String> alleJahre = new ArrayList<>();
// add an "all"-element to the list as first entry
alleJahre.add("gesamt");
//iterate through cursor and get distinct year values
cursor.moveToFirst();
while (cursor.moveToNext()){
String zs = cursor.getString(2);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyy-MM-dd" );
LocalDate localDate = LocalDate.parse( zs , formatter );
alleJahre.add(""+localDate.getYear());
Log.d("zeit",zs);
}
return alleJahre;
}
这是一个非常简单的 sql 语句,您可以使用 rawQuery()
:
方法执行
public ArrayList<String> getAlleJahreSpinner() {
SQLiteDatabase db = this.getReadableDatabase();
String sql = "SELECT DISTINCT strftime('%Y'," + KEY_DATUM + ") FROM " + TABLE_BIER;
Cursor cursor = db.rawQuery(sql, null);
ArrayList<String> alleJahre = new ArrayList<>();
alleJahre.add("gesamt");
while (cursor.moveToNext()) {
String zs = cursor.getString(0);
alleJahre.add(zs);
}
cursor.close();
db.close();
return alleJahre;
}
我有一个带有列 "KEY_DATUM" 的 SQLite 数据库,它是一个格式为 "YYYY-mm-dd".
的字符串现在我想知道我在哪些年份有条目,所以从我的数据库中获取不同的年份。 我已经尝试了下面的查询,但我仍然得到重复的值。
有人发现我的错误吗?
提前致谢!
public ArrayList<String> getAlleJahreSpinner() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(
true, //boolean distinct
TABLE_BIER, // String Table
columns, // String[] columns
"strftime('%Y'," + KEY_DATUM + ")", // String selection
null, // String[] selectionargs
KEY_DATUM, // String groupBy
null, // String having
KEY_DATUM, // String orderBy
null); // String limit
ArrayList<String> alleJahre = new ArrayList<>();
// add an "all"-element to the list as first entry
alleJahre.add("gesamt");
//iterate through cursor and get distinct year values
cursor.moveToFirst();
while (cursor.moveToNext()){
String zs = cursor.getString(2);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyy-MM-dd" );
LocalDate localDate = LocalDate.parse( zs , formatter );
alleJahre.add(""+localDate.getYear());
Log.d("zeit",zs);
}
return alleJahre;
}
这是一个非常简单的 sql 语句,您可以使用 rawQuery()
:
public ArrayList<String> getAlleJahreSpinner() {
SQLiteDatabase db = this.getReadableDatabase();
String sql = "SELECT DISTINCT strftime('%Y'," + KEY_DATUM + ") FROM " + TABLE_BIER;
Cursor cursor = db.rawQuery(sql, null);
ArrayList<String> alleJahre = new ArrayList<>();
alleJahre.add("gesamt");
while (cursor.moveToNext()) {
String zs = cursor.getString(0);
alleJahre.add(zs);
}
cursor.close();
db.close();
return alleJahre;
}