Поиск БД SQLite для DateType через String - Android - PullRequest
0 голосов
/ 16 октября 2018

В настоящее время я использую базу данных SQLite в существующем проекте Android.

В поле EditText я могу искать различные атрибуты элемента, такие как цвет, заголовок или количество.Таким образом, для каждого набранного письма, обновление поискового предложения.В моей Item-Entitiy у меня есть разные атрибуты, вот простой пример:

 Item:
 * String: color
 * String: title
 * int: price
 * Date: date
 * int: id

Так что в моем поле поиска я хотел бы рассмотреть все эти атрибуты.Это работает как для моей строки, так и для моих атрибутов int, но я не могу отфильтровать тип данных Date.

Если я введу «18» в TextEditField, я бы хотел получить все элементы с 2018 года, все элементы с 18 марта 1974 года, все элементы с заголовком «18 подсказок для sql-запросов» ивсе предметы с ценой от 18,00 до 18,99 - и, конечно, каждые XX, 18.

Мой текущий запрос в моем ItemDao:

@Query("SELECT * FROM items WHERE (LOWER(color) LIKE :searchtext OR LOWER(title) LIKE :searchtext OR price LIKE :searchtext) ORDER BY date DESC")
public abstract List<ItemEntity> searchItems(String searchtext);

Как я могу это принятьЯ также могу искать тип даты?Я пытался включить strftime('%Y-%m-%d',date) LIKE :searchtext

1 Ответ

0 голосов
/ 17 октября 2018

Чтобы решить мою проблему, я добавил в свой запрос дополнительную строку для поиска по датам:

OR LOWER(strftime('%d.%m.%Y', datetime(date/1000, 'unixepoch', '+1 day'))) LIKE :searchtext

После поиска в моей базе данных я увидел, что датасохраняется как метка времени, содержащая компонент времени в миллисекундах, поэтому было необходимо разделить начальную метку времени на 1000. После этого у меня есть метка времени в формате UNIX Epoche, поэтому я определяю ее как «unixepoche».Последний атрибут добавляет 1 день к загруженной дате, поскольку конфигурация% d начинается с нуля.Таким образом, первое января 19 года без «+1 дня» будет преобразовано в 00.01.2019.

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