我无法从数据库中检索我的数据。我已经尝试过像子句和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;
}
答案 0 :(得分:0)
以YYYY-MM-DD格式将日期保存为数据库中的字符串。
然后尝试执行此查询:
select * from mytable where `date` >= '2018-01-01' and `date` <= '2018-03-25'