【问题标题】:How to fetch record from Sqlite by comparing two dates如何通过比较两个日期从 Sqlite 获取记录
【发布时间】:2017-04-27 07:51:47
【问题描述】:

我在互联网上对此进行了大量搜索,但尚未找到解决方案。

基本上我想将两个日期之间的记录从我的 sqlite 数据库填充到我的自定义 android listview。

我知道 SQLite 没有专用的 DATETIME 类型。通常人们所做的是确保他们将日期存储为一致的格式化字符串;例如,YYYY-MM-DD hh:mm:ss。如果这样做,只要一致,那么您可以直接比较日期。

但是我的查询返回了不正确的记录。

这些是我尝试过的查询:

 public Cursor getBhattiNamesByDate(String fromDate, String todate, SQLiteDatabase sqLiteDatabase) {

    /*String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE "
            +AddBhattiContract.AddBhattiItems.COL_1+" BETWEEN '"+fromDate+"' AND '"+todate+"'";*/

    String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE "
            +AddBhattiContract.AddBhattiItems.COL_1+" >= Datetime('"+fromDate+"') AND "
            +AddBhattiContract.AddBhattiItems.COL_1+" <= Datetime('"+todate+"')";

  /*  String query = " SELECT * FROM "+ AddBhattiContract.AddBhattiItems.TABLE_NAME+" WHERE "
            +AddBhattiContract.AddBhattiItems.COL_1+" >= '"+fromDate+"' AND "
            +AddBhattiContract.AddBhattiItems.COL_1+" <= '"+todate+"'";*/

    cursor = sqLiteDatabase.rawQuery(query, null);
    Log.e("TagWastageCursor","true");
    return cursor;
}

【问题讨论】:

标签: android sqlite date


【解决方案1】:

最好的实现方式是将dare保存为时间戳(String),然后在查询时,只要解析那些时间戳,就可以进行比较了。 时间戳是从 1970 年 1 月 1 日开始的秒数。

【讨论】:

  • 你有什么可以参考的例子吗??
  • 是秒数还是毫秒数?,我也建议使用INTEGER而不是文本,因此查询时不需要解析
  • 是SECONDS的个数,最好把时间戳保存为String,因为需要解析成Long。 Long 可以保存比 INTEGER 更多的值,因此如果这样做可能会出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2018-11-12
  • 2020-11-16
相关资源
最近更新 更多