1

我有一个名为daily_mood的表,它有三 (3) 列,如下所示:

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

在此处输入图像描述

它的数据是这样的: 在此处输入图像描述

现在,我想完全根据mooddate 列选择/删除所有行,除了从当前日期到24 小时之前。

我试过这个查询:

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

结果应该是上述数据的 1 行(最后一行)。但这里有 2 行在此处输入图像描述

结果应该是最后一行。任何人都可以帮助我吗?谢谢。

4

2 回答 2

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()) + "'";
于 2012-09-22T06:10:37.337 回答
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();
    }
于 2013-09-10T12:06:20.513 回答