Используя Sqlite flutter BETWEEN запрос, чтобы вернуть записи последних 2 дней - PullRequest
0 голосов
/ 21 февраля 2020

Я надеялся, что вы, ребята, сможете мне помочь!

Мой текущий код не работает. Появляется сообщение об ошибке: Unhandled Exception: DatabaseException(unrecognized token: "'1582268587562" (code 1 SQLITE_ERROR): , while compiling: SELECT * FROM my_table WHERE date BETWEEN '1582095787562' AND '1582268587562) sql 'SELECT * FROM my_table WHERE date BETWEEN '1582095787562' AND '1582268587562' args []}

Я пытаюсь получить запрос sqflite для возврата записей за последние 2 дня. Вот запрос, который я сейчас использую:

Future<List<Map<String, dynamic>>> queryLastTwoDays() async {
    Database db = await instance.database;
    DateTime now = DateTime.now();
    DateTime twoDaysAgoFromNow = now.subtract(Duration(days: 2));
    var today = now.millisecondsSinceEpoch;
    var twoDaysAgo = twoDaysAgoFromNow.millisecondsSinceEpoch;
    return await db.rawQuery('''SELECT * FROM $table WHERE $columnDate BETWEEN '$twoDaysAgo' AND '$today''');
  }

СТРУКТУРА БАЗЫ ДАННЫХ

CREATE TABLE $table ( $columnId INTEGER PRIMARY KEY, $columnName TEXT NOT NULL, $columnAge INTEGER NOT NULL, $columnColour TEXT NOT NULL, $columnDate INTEGER NOT NULL )

ОБРАЗЦЫ ДАННЫХ ДЛЯ ВСТАВКИ:

 `DatabaseHelper.columnName : 'Breakfast',
  DatabaseHelper.columnAge  : 23,
  DatabaseHelper.columnColour : 'red',
  DatabaseHelper.columnDate : DateTime.now().millisecondsSinceEpoch,`

Спасибо за любую помощь !

1 Ответ

0 голосов
/ 21 февраля 2020

Как указывает Шон в комментарии, в вашем сгенерированном SQL отсутствует заключительная цитата. Посмотрите на сообщение об ошибке:

...while compiling: SELECT * FROM my_table 
WHERE date BETWEEN '1582095787562' AND '1582268587562)

Нет закрывающего ' перед круглой скобкой.

Это исходит из этой строки, я думаю:

    return await db.rawQuery('''SELECT * FROM $table WHERE $columnDate BETWEEN '$twoDaysAgo' AND '$today''');

Вам нужна еще одна одинарная кавычка перед тройной одинарной кавычкой.

...