代码之家  ›  专栏  ›  技术社区  ›  Shihab Uddin

如何在sqlite中选择/删除除当前时间之前24小时内的所有行

  •  1
  • Shihab Uddin  · 技术社区  · 12 年前

    我有一张名为 每日模式 它有三(3)列,如下所示:

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

    enter image description here

    它的数据看起来是这样的: enter image description here

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

    我试过这样的查询:

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

    结果应该是上面数据中的1行(最后一行)。但这里是2.like enter image description here

    结果应该是最后一行。有人能帮我吗?谢谢

    2 回复  |  直到 12 年前
        1
  •  4
  •   Rensodarwin    10 年前
    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()) + "'";
    
        2
  •  1
  •   Dinesh Sharma    11 年前
    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();
        }