【问题标题】:deleting 1 month old records from SQLite table从 SQLite 表中删除 1 个月大的记录
【发布时间】:2013-07-12 11:12:29
【问题描述】:

我正在开发一个 android 应用程序,我每天都想检查表中存在的 1 个月前的记录,如果我想从表中删除 1 个月前的记录,我将插入时间保存为长值 (System.currenttimemillis)在表中,它的数据类型是 REAL。 sq-lite中是否有任何直接查询可以通过指定间隔来删除旧记录?

我在 MySQL 中得到以下查询,这在 sq-lite 中有效吗?请帮帮我...

     DELETE FROM [table] WHERE [InsertTime] < DATE_SUB(NOW(), INTERVAL 1 MONTH);

【问题讨论】:

  • 由于 sqlite 中没有日期类型,因此您应该更具体地了解如何在 sqlite 数据库中存储日期(int?varchar?if varchar 那么哪种格式?)
  • SQLiteDatabase.deletedelete (table, "InserTime &lt; ?", new String[] { "" + (time_in_millis - one_month_in_millis) });

标签: android sqlite


【解决方案1】:

这样的查询应该可以完成这项工作:

DELETE FROM <table> WHERE datetime(<dateColumn> / 1000, 'unixepoch') < datetime('now', '-1 month')

除以1000 是必要的,因为您以毫秒为单位存储时间戳,但SQLite 理解unixepoch 的秒数。

【讨论】:

    【解决方案2】:

    这会从当前日期减去一个月。

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.MONTH, -1);
    

    一旦你有日期执行删除查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多