【问题标题】:how to select/delete all rows except within 24 hours before from current time in sqlite如何在sqlite中选择/删除当前时间前24小时内的所有行
【发布时间】:2012-09-14 11:44:34
【问题描述】:

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

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

它的数据如下所示:

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

我试过这样的查询:

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

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

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

【问题讨论】:

  • 不是 sqllite 开发人员,但我建议您查看 SELECT datetime('now', '-1 day'); 的结果并验证它是否符合您的预期。
  • 您是说输出的日期不是您所期望的吗?为了清楚起见,我建议的是一种调试方法,而不是解决您的问题的方法。
  • 执行已发布的查询时会发生什么?它有什么问题?
  • @jmilloy:我需要从当前时间开始的 24 小时内的数据。结果在上面有 2 行。但它应该是最后一个。它只是从当前计算一整天,但我需要在 24 小时内准确。所以最终结果应该是上图中的最后一行。
  • 我明白了。您需要比较时间戳而不是日期。这里有详细的解释可以帮助你:stackoverflow.com/questions/2930768/…

标签: android sqlite


【解决方案1】:
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()) + "'";

【讨论】:

  • 你能给我原始的sqlite查询吗?
  • SELECT * from daily_mood WHERE mooddate >= '2012-09-22 12:05:00'
【解决方案2】:
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();
    }

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多