【问题标题】:Cannot remove rows comparing dates in my SQLite db Android无法删除我的 SQLite db Android 中比较日期的行
【发布时间】:2018-02-11 11:00:14
【问题描述】:

我现在正在尝试搜索一段时间,但没有成功删除我的数据库表中的特定行。

我想这样做是为了比较 DATE 记录值和次日值。

我以为这样就可以了

String sql = "DELETE FROM Planned_expenses_table WHERE DATE <= date('now','+1 day')";
    SQLiteDatabase db = this.getWritableDatabase();

    db.execSQL(sql);
    db.close(); 

但它没有。

有什么建议吗?我目前使用"YYYY-MM-DD" 模式存储列日期值,这与date() 返回的相同。 Logcat 没有显示任何异常。
那么这段代码有什么问题呢?先感谢您。

编辑:我刚刚注意到,如果我在&gt; 中更改&lt;=,行将被删除,但这很奇怪,因为保存的日期较旧

【问题讨论】:

  • 您尚未告诉我们您要删除哪些日期。
  • @CL。我想从表中删除字段 DATE 的值早于明天日期的每条记录。无论如何我设法解决它。

标签: java android sqlite date


【解决方案1】:

我设法达到了预期的结果。

显然,我以YYYY-M-D 的形式保存日期,而不是问题中写的日期。这就是订单检查&lt;= 行为不端的原因。

【讨论】:

    【解决方案2】:

    为什么不计算日期然后传入实际值。

    var tomorrow = DateTime.Now + TimeSpan.FromDays(1);
    string sql = $"DELETE FROM Planned_expenses_table WHERE DATE <= '{tomorrow.ToString("yyyy/MM/dd")}')";
    SQLiteDatabase db = this.getWritableDatabase();
    
    db.execSQL(sql);
    db.close();
    

    【讨论】:

    • 感谢您的快速响应,但 android studio 似乎无法解析 DateTime 和 TimeSpan,我该如何导入它们?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多