【问题标题】:Cannot execute query for Date column using between in SQLite无法在 SQLite 中使用 between 执行日期列查询
【发布时间】:2018-03-15 12:28:51
【问题描述】:

我在 Android 中使用 SQLITE 数据库。

创建表查询是:

String CREATE_TBookOrder = "CREATE TABLE IF NOT EXISTS BookOrder (" +
        "  `OrderId` INTEGER ," +
        "  `OrderDate` DATE ," +
        "  `OrderTotal` DOUBLE " +
        ")";

我正在尝试使用以下查询在日期之间获取数据:

 SELECT OrderId , OrderTotal FROM BookOrder
 WHERE OrderId = 55 AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')

但我收到的响应为零记录。

我获取数据的代码是:

String queryStr = "SELECT OrderId , OrderTotal FROM BookOrder WHERE OrderId = 55 AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')";
sqLiteDatabase = this.getWritableDatabase();
cursor = sqLiteDatabase.rawQuery(queryStr, null);
if (cursor.moveToFirst()) {
    do {
        Log.d("data", "sub OrderId " + cursor.getInt(0));
        Log.d("data", "sub OrderTotal " + cursor.getFloat(1));
        Log.d("data", "--------------");
    } while (cursor.moveToNext());
}

sqLiteDatabase.close();

这在 SQL Server 上运行顺利,但在 SQLITE Android 上运行不成功。

【问题讨论】:

  • SQLite 没有日期数据类型。您在此列中存储的实际值是多少?
  • 我将Sqlite中OrderDate的DataType改为Text,还是没有结果

标签: android performance sqlite date android-sqlite


【解决方案1】:

假设日期以 yyyy-mm-dd 格式存储为字符串,那么您需要通知查询您正在处理查询中的日期。

所以不是:-

SELECT OrderId , OrderTotal FROM BookOrder
    WHERE OrderId = 55 
        AND ( OrderDate BETWEEN '2018-01-01' AND '2018-12-12')

你可以使用:-

SELECT OrderId , OrderTotal FROM BookOrder
    WHERE OrderId = 55 
        AND (date(OrderDate) BETWEEN date('2018-01-01') AND date('2018-12-12'))

您不妨查看SQL As Understood By SQLite - Date And Time Functions

【讨论】:

  • 我将Sqlite中OrderDate的DataType改为Text,还是没有结果。
【解决方案2】:

我看了你的问题,我认为是日期数据类型的问题。请检查此link,也许它可以解决您的问题。

【讨论】:

  • 我将Sqlite中OrderDate的DataType改为Text,还是没有结果
【解决方案3】:

在尝试了很多选项后解决了。 对我有用的是, 首先我将日期列的数据类型更改为 DATETIME。 然后在将日期插入列之前,我将其转换为 yyyy-MM-dd hh:mm:ss 格式。

在检索日期时,我使用了以下查询,

SELECT OrderId , OrderTotal FROM BookOrder WHERE OrderId = 55 AND (OrderDate BETWEEN '2018-01-01' AND '2018-12-12')

第一个日期是包含的,第二个日期是不包含的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2012-09-23
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多