我如何在两个日期之间获取数据

时间:2018-03-24 16:33:02

标签: android android-studio android-sqlite

我无法从数据库中检索我的数据。我已经尝试过像子句和AND(&)运算符之类的所有内容,但我无法找到解决方案。 基本上我正在处理每日费用管理项目,我希望用户在两个选定日期之间检索数据,并且将检索收入和费用数据,并根据所选日期范围显示余额。请有人帮助我。 这就是我创建表格的方式。

public void onCreate(SQLiteDatabase db) {
    String query="CREATE TABLE "+TABLE_NAME+" 
        ( "+ id + " INTEGER PRIMARY KEY AUTOINCREMENT,
          "+Amount+" INTEGER ,
          "+ date + " TEXT ,
          " +incomecategory+" TEXT, 
          " +paymentmethod+ " TEXT )";

    db.execSQL(query);

    String query2="CREATE TABLE "+TABLE_NAME2+" 
        (" + id2 + " INTEGER PRIMARY KEY AUTOINCREMENT,
         " +Amount2+" INTEGER ,
         " + date + " TEXT ,
         " +expensecategory+" TEXT , 
         " +paymentmethod2+ " TEXT )";

    db.execSQL(query2);
}

这是我如何插入收入表

public void insertIntoIncome(int name,String category,String 
incomedate,String pm1){
    Calendar cal=Calendar.getInstance(TimeZone.getDefault());
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put(Amount,name);
    values.put(date,incomedate);
    values.put(incomecategory,category);
    values.put(paymentmethod,pm1);
    db.insert(TABLE_NAME,null,values);
    db.close();
} 

此功能将显示从表中检索的收入数据,但我在检索数据时遇到问题。

public String getIncomeDataByWeek(Date startdate,Date enddate){
    String query="SELECT * FROM "+TABLE_NAME;
    String result="";
    DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor=db.rawQuery(query,null);
    Date incomedate=null;
    cursor.moveToFirst();
    while (cursor.isAfterLast()==false){
        try {
            incomedate=df.parse(cursor.getString(2));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        if((incomedate.after(startdate))&&(incomedate.before(enddate))){
            result+="("+cursor.getString(0)+") "+cursor.getString(1)+" : 
            "+cursor.getString(3)+" - " + cursor.getString(2)+" : " + 
            cursor.getString(4)+"'";
            cursor.moveToNext();
        }
    }
    db.close();
    return result;
}

1 个答案:

答案 0 :(得分:0)

以YYYY-MM-DD格式将日期保存为数据库中的字符串。

然后尝试执行此查询:

select * from mytable where `date` >= '2018-01-01' and `date` <= '2018-03-25'