从 SQLite 数据库中获取当前日期到上个月日期之间的数据

Get data between current date to last month date from SQLite database

我需要从 SQlite 获取当前日期到上个月(即过去 30 天)之间的数据。 这是获取所有数据列表的代码,但我从中一无所获。

public List<Birthday> getWeekBirthdays() {

    List<Birthday> birthdays = new ArrayList<Birthday>();
    SQLiteDatabase db = this.getReadableDatabase();
    Calendar theEnd = Calendar.getInstance();
    Calendar theStart = (Calendar) theEnd.clone();
    theStart.add(Calendar.DAY_OF_MONTH, -30);

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String start = dateFormat.format(theStart.getTime());
    String end = dateFormat.format(theEnd.getTime());

    String dateQuery = "SELECT * FROM " + TABLE_Birthday + " WHERE "
            + KEY_Event_Date + " BETWEEN " + start + " AND " + end;
    Log.e(LOG, dateQuery);
    Cursor c = db.rawQuery(dateQuery, null);
    Log.e(LOG, "no of birthday : " + c.getCount());
    if (c.moveToFirst()) {
        do {
            Birthday birthday = new Birthday();
            birthday.setName(c.getString(c.getColumnIndex(KEY_User_Name)));
            birthday.setEventType(c.getString(c
                    .getColumnIndex(KEY_Event_Type)));
            birthday.setEventDate(c.getString(c
                    .getColumnIndex(KEY_Event_Date)));
            birthday.setId(c.getInt(c.getColumnIndex(KEY_ID)));
            birthdays.add(birthday);
        } while (c.moveToNext());
    }
    return birthdays;
}

我没有收到错误请帮助我并告诉我如何获取这些数据。

谢谢

一种方法是

String query="SELECT * from "+TABLE_Birthday +" WHERE "+ KEY_Event_Date +" >= date('now','localtime', '-30 day')"; 

Cursor c = myDataBase.rawQuery(query,null);

它将获取今天的最后 30 days 条记录。但是你的 KEY_Event_Date 必须在 yyyy-MM-dd 中有值然后才有效。

您可以在 SQL 查询中使用此条件 日期('now','-29天') 此查询为您提供 30 天的日期范围