【问题标题】:Android Sqlite - Select the row which was inserted 1 hour beforeAndroid Sqlite - 选择一小时前插入的行
【发布时间】:2014-01-04 04:32:38
【问题描述】:

我正在使用 Android Sqlite,我尝试获取 1 小时前插入的行。但它没有返回任何东西,我通过 cursor.count() 进行了检查

我尝试了以下查询

String[] columns = new String[] { KEY_ID, KEY_CONTENT1, KEY_CONTENT2,
                KEY_CONTENT3, KEY_CONTENT4, KEY_CONTENT5, KEY_CONTENT6};

cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns, KEY_CONTENT3               + "< " + "DATETIME('NOW', '-1 hours')", null, null, null, null);

还有另一个查询

String selectRow = "select *  FROM detail1 WHERE content3 < DATETIME('NOW', '-1 hours');";

Cursor cursor = sqLiteDatabase.execSQL(selectRow);

还有另一个查询

String selectRow = "select *  FROM detail1 WHERE content3 < DATETIME('NOW', '-1 hours');";

cursor = sqLiteDatabase.rawQuery(selectRow,null);

这个查询对我有用

String selectRow = "select *  FROM detail1 WHERE content3 > DATETIME('NOW', '-1 hours');";

Cursor cursor = sqLiteDatabase.execSQL(selectRow);

【问题讨论】:

  • “1 小时前”到底是什么意思?您的查询返回超过一小时前插入更多的所有记录。
  • 1小时前插入的记录,我上面的查询没有返回任何记录。
  • 您只是在重复您在问题中所写的内容。请编辑您的问题以显示当前时间的示例,以及应返回和不应返回哪些记录。
  • 我编辑了请检查是否可以

标签: sql sqlite android-sqlite


【解决方案1】:
DATETIME('NOW', '-1 hours');" 

这个函数返回这个2014-01-04的时间, 并且在数据库2014-01-04 10:24:21 中具有这种格式。这里只比较了2014,而不是完整的日期。更好的方法我建议使用 epoch

试试下面的查询,它会给你以秒为单位的差异

SELECT (strftime('%s','now')/60) - (strftime('%s',content3)/60);

【讨论】:

  • 你能告诉我任何问题吗
  • 我想以小时为单位进行检索,并且函数 DATETIME('Now','-1hours');在删除 1 小时前的记录时效果很好。
  • 即使我也遇到了同样的问题,花了整整一天后采取了其他方式,请检查我的更新
  • 它返回 null,但我想要 1 小时前插入的行。
  • 查询错误:没有这样的列:content3 无法执行语句
猜你喜欢
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2014-01-26
  • 2013-05-26
相关资源
最近更新 更多