Параметр выбора SQLite CursorLoader - формат даты в столбце - PullRequest
0 голосов
/ 13 февраля 2019

В моем приложении для Android у меня есть база данных, которая хранит даты в виде длинных значений из System.currentTimeInMilis.Теперь я хочу запросить конкретные дни, используя CursorLoader.Вот что я пробовал:

DateFormat sameDayCheckerformatter = new SimpleDateFormat("dd-MM-yyyy");

String selection = sameDayCheckerformatter.format(ItemEntry.COLUMN_DAY) + "=" + sameDayCheckerformatter.format(dayInMilis);

return new CursorLoader(getActivity(),
            ItemContract.ItemEntry.CONTENT_URI_ITEMS,
            projection,
            selection,
            null,
            null);

Это не сработало, как я ожидал:

java.lang.IllegalArgumentException: Невозможно отформатировать данный объект как дату

Но я не могу найти решение.Как мне это решить?

1 Ответ

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

Почему вы применяете формат к ItemEntry.COLUMN_DAY?Это похоже на String, представляющее имя столбца.Также вам нужно окружить форматированную дату кавычками.Измените это на:

String selection = ItemEntry.COLUMN_DAY + " = '" + sameDayCheckerformatter.format(dayInMilis) + "'";

Редактировать : если столбец ItemEntry.COLUMN_DAY имеет целочисленные значения, вам вообще не нужно форматировать:

String selection = ItemEntry.COLUMN_DAY + " = "  + dayInMilis;

Редактировать 2 : Вам нужна strftime() функция:

String selection = 
    "strftime('%d-%m-%Y', " + ItemEntry.COLUMN_DAY + " / 1000, 'unixepoch') = '" + 
    sameDayCheckerformatter.format(dayInMilis) + "'";
...