开发者社区> 问答> 正文

如何查询SQLite数据库以返回以毫秒为单位插入的2个特定日期/时间之间的所有日期/时间?

我有一个4列的SQLite数据库。我使用“ System.currentTimeMillis()”方法在COLUMN_DATE中插入了以毫秒为单位的日期/时间值,并且我想查询SQLite数据库以获取2个特定日期之间的所有行,也以毫秒表示。此查询也必须包含具有这2个特定日期的行。

这是我的SQLite数据库:


public static final String CREATE_SQL = "create table " + TABLE_NAME + "(" + COLUMN_ID + " integer primary key autoincrement, " +
        COLUMN_DATE + " integer not null, " + COLUMN_STATUS + " text not null, " + COLUMN_TOTAL + " text not null);";

这是带有插入值的数据库:

在此处输入图片说明

我想通过1578530800000(ID = 2)作为开始日期和1578698202000(ID = 5)作为结束日期查询SQLite数据库,并获取这些特定日期之间的所有行,包括那些日期本身。意味着我想要将表标记为红色矩形。

我试图查询数据库,但没有得到我所期望的。这是我的查询示例:

String[] projection = {Wdatabase.COLUMN_ID, Wdatabase.COLUMN_DATE, Wdatabase.COLUMN_STATUS, Wdatabase.COLUMN_TOTAL};
String selection = Wdatabase.COLUMN_DATE + " >= " + startDate + " AND " + Wdatabase.COLUMN_DATE +" <= " + endDate;

Cursor r = Objects.requireNonNull(getActivity()).getContentResolver().query(DbProvider.CONTENT_URI, projection, selection, null, null, null);

谁能告诉我这是怎么回事?

这是我的日志日志:

while (r.moveToNext()) {

        Log.i("Arguments", "CursorId: " + r.getInt(0));
        Log.i("Arguments", "CursorDate: " + r.getLong(1));
        Log.i("Arguments", "CursorStatus: " + r.getString(2));
        Log.i("Arguments", "CursorTotal: " + r.getString(3));

    }

展开
收起
Puppet 2020-01-12 10:43:56 1023 0
1 条回答
写回答
取消 提交回答
  • 您的查询是错误的。您应该将变量而不是第一个null放置在query()方法上,而不是在选择参数内。

    检查这个

    2020-01-12 10:44:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
国产数据库研制人才培养实践 立即下载
阿里云&信通院《Serverless数据库技术研究报告》 立即下载
微信SQLite数据库损坏恢复实践 立即下载