Извлекайте данные по дате из базы данных SQLITE kotlin - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть одна база данных SQlite, где я храню некоторые данные с датой.

Теперь я хочу получить дату с датой, например:

  1. Месяц мудрый - это означает, что япередайте значение, как Текущая дата - Конечная дата, в этот месяц, 1-ую дату.

  2. Год - это означает, что я хочу получить данные 1-го апреля-20..просмотры на 31 марта-20..current

  3. Дата начала и окончания мудрости - это дата, которую я передаю.

Для этого у меня есть одно решение: ЗДЕСЬ для Java.

Но я понятия не имею, как это работает.Кто-нибудь, пожалуйста, объясните мне, как работать с этим и Как я могу получить данные, как я упоминал выше.FOR KOTLIN

TABLE

db.createTable(customerDetail, true,
                credit_id to INTEGER + PRIMARY_KEY + AUTOINCREMENT,
                credit_type to TEXT,
                c_id to TEXT,
                credit_amount to TEXT,
                credit_date to TEXT,
                addFrom to TEXT
        )

ОБНОВЛЕНИЕ

Для данных за месяц я попробую ниже запрос как:

"SELECT * FROM $customerDetail WHERE $credit_date BETWEEN strftime('%d-%m-%Y', '$startDate') AND strftime('%d-%m-%Y', '$currentDate')"
/*SELECT * FROM CustomerDetail WHERE credit_date BETWEEN strftime('%d-%m-%Y', '01/02/2019') AND strftime('%d-%m-%Y', '23/02/2019')*/

Но это дает мне arralistSize = 0.

После этого я могу написать новый запрос, например:

"SELECT * FROM $customerDetail WHERE $credit_date BETWEEN '$startDate' AND '$currentDate'"
/*SELECT * FROM CustomerDetail WHERE credit_date BETWEEN '01/02/2019' AND '23/02/2019'*/

В этомданные запроса вернутся. Но он возвращает все данные без какой-либо фильтрации.

Если кто-нибудь знает, почему эта работа такая, пожалуйста, помогите мне.

МОЙ СПИСОК ДАННЫХ

enter image description here

Заранее спасибо.

Решение:

Решение для МЕСЯЦА

Я просто изменяю формат даты "dd/mm/yyyy" НА "yyyy/mm/dd" и заново вставляю все данные.

И Огонь ниже ЗАПРОСА:

"SELECT * FROM $customerDetail WHERE $credit_date BETWEEN '$startDate' AND '$currentDate'"

1 Ответ

0 голосов
/ 23 февраля 2019

SQLite не имеет типа данных Date, как другие СУБД.Даты считаются TEXT.Поэтому, когда он сравнивает столбец credit_date, он на самом деле сравнивает строки.Это было бы хорошо, если бы вы сохранили свои даты в формате YYYY-MM-DD и сравнили с тем же форматом.Но если вы храните даты в формате DD/MM/YYYY, то сравнивать нельзя.Поэтому лучшим решением было бы изменить формат столбца credit_date на YYYY-MM-DD.Если это невозможно, вам нужно преобразовать строковое значение столбца следующим образом:

substr(credit_date, 7, 4) || '-' || substr(credit_date, 4, 2) || '-' || substr(credit_date, 1, 2)

Теперь вы можете использовать это в запросе, например:

SELECT * FROM $customerDetail 
WHERE substr($credit_date, 7, 4) || '-' || substr($credit_date, 4, 2) || '-' || substr($credit_date, 1, 2)
BETWEEN '$startDate' AND '$currentDate'

Но у вас естьчтобы убедиться, что $startDate и $currentDate также имеют формат YYYY-MM-DD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...