2012-09-22 48 views
1

我有一個名爲表daily_mood之前,從當前時間刪除除24小時內的所有行,它有三(3)列,看起來象下面這樣:如何選擇/ SQLite中

CREATE TABLE daily_mood (moodid INTEGER PRIMARY KEY autoincrement,mood TEXT,mooddate DATETIME) 

enter image description here

它的數據看起來像這樣: enter image description here

現在,我要選擇/刪除除從當前日期的所有行到24小時前完全按mooddate柱。

我想這就像查詢:

SELECT *from daily_mood where mooddate>=datetime('now', '-1 day'); 

結果應該是從上面data.but 1行(最後一個)這裏來2.like enter image description here

結果應該是最後一排。任何人都可以幫助我?謝謝。

+0

不是一個sqllite開發者,但我會建議您查看選擇DateTime的結果( '現在', '-1天') ;並驗證它是你所期望的。 – jtimperley

+0

你是說輸出的日期不是你所期望的?爲了清楚起見,我推薦了一種調試方式,而不是解決問題的方法。 – jtimperley

+0

執行您發佈的查詢時會發生什麼?它有什麼問題? – jmilloy

回答

4
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); 
Calendar c = Calendar.getInstance(); 
c.setTimeMillis(System.currentTimeMillis()); 
c.add(Calendar.HOUR_OF_DAY, -24); 


String query = "SELECT * from daily_mood WHERE mooddate >= " + "'" + dateFormat.format(c.getTime()) + "'"; 
+0

哇.....它的作品...ü保存我的一天... –

+0

可以給我原始的sqlite查詢嗎? –

+0

SELECT * from daily_mood WHERE mooddate> ='2012-09-22 12:05:00' – Simon

1
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd",Locale.US); 
     Calendar cd = Calendar.getInstance(); 
     Calendar removeBefore = Calendar.getInstance(); 
     removeBefore.set(cd.get(Calendar.YEAR), cd.get(Calendar.MONTH),(cd.get(Calendar.DAY_OF_MONTH) - 7));//Here set day before old data to be removed. 

try{ 

    sqlDatabase=getSqlWritable(); 
      rowaffeted=sqlDatabase.delete(TB3, TB3_Date +" < ? ", new String[]{df.format(removeBefore.getTime())}); 


     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

//你需要使用下面的方法

public SQLiteDatabase getSqlWritable(){ 
     if(dbhelper == null) 
      dbhelper=new DbOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 
     return dbhelper.getWritableDatabase(); 
    }