2015-05-01 75 views
0

我有一個應用程序,每天向SQLite數據庫註冊一些信息。 我的表看起來像這樣:從sqlite檢索數據由周

ID數據計數器

和腳本來創建我的表是:

CREATE_TABLE_SCRIPT = "CREATE TABLE " + TABLE_RESULTS_NAME + "(" 
     + KEY_ID + " INTEGER PRIMARY KEY," + KEY_DATA + " TEXT," + KEY_COUTER + " INTEGER DEFAULT 0" + ")"; 

我插入今天的日期,使用字符串將其轉換SimpleDateFormat和計數器,每次我按下按鈕X.如果當前日期是像在這個數據庫表中的最後一行相同,我只是更新計數器列做count ++。

我可以從數據庫檢索所有信息沒有問題。但是我想每週都檢索SUM(counter),例如我的所有數據庫記錄中都有26/Apr/2015 -- 2/May/2015等等。 我想建立自己的算法,但我意識到我有點困惑,我的截止日期很快,所以我想找一個簡單的方法。

也許有人有同樣的情況,請幫助我。

+0

如果以時間戳格式存儲日期,比較日期會更加容易。 – vishalk

+0

sqlite是否允許我們使用數據類型數據? – Choletski

+0

不,它不支持。 – vishalk

回答

0

我決定改變了一下我的表,所以現在這個樣子:

private static final String CREATE_TABLE_SCRIPT = "CREATE TABLE " + TABLE_RESULTS_NAME + "(" 
     + KEY_ID + " INTEGER PRIMARY KEY," + KEY_DATA + " INTEGER," + KEY_COUTER + " INTEGER DEFAULT 0" + ")"; 

和retriving我SUM(counter)一段時間的方法是:

// Getting range 
public List<Dates> getRange(long dataStart, long dataEnd) { 
    List<Dates> datesList = new ArrayList<Dates>(); 
    String selectQuery = "SELECT * FROM " + TABLE_RESULTS_NAME; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.query(TABLE_RESULTS_NAME, new String[]{KEY_ID, 
      KEY_DATA, KEY_COUTER}, KEY_DATA + " BETWEEN ? AND ? ", new String[]{String.valueOf(dataStart),String.valueOf(dataEnd)},null, null, null, null); 

    // looping through all rows and adding to list 
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 

     Dates dates = new Dates(); 
     dates.set_id(Integer.parseInt(cursor.getString(0))); 
     dates.set_data(cursor.getLong(1)); 
     dates.set_counter(cursor.getInt(2)); 
     // Adding contact to list 
     datesList.add(dates); 
    } 
    // return dates list 
    return datesList; 
} 

並在我的dao類中調用此通用方法:

public int retiveRange() { 
    List<Dates> dates = dataBase.getRange(data1, data2); 
    int i = 0; 

    for (Dates dts : dates) { 
     i += dts.get_counter(); 
    } 

    return i; 
} 
1

以這種格式'2015-04-24 00:00:00'存儲您的日期,然後嘗試下面的查詢。

select SUM(counter) from dates1 
where dates >= Datetime('2015-04-26 00:00:00') 
and dates <= Datetime('2015-05-02 00:00:00')