androidsqlite查询从timestring列获取不同的年份值

ao218c7q  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(227)

我有一个sqlite数据库,其中有一列“key\u datum”,这是一个格式为“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;
    }
ohtdti5x

ohtdti5x1#

这是一个非常简单的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;
}

相关问题