Какой лучший способ сохранить даты?

У меня есть база данных, куда я сохраняю название привычки и другие данные. Также я хочу сохранить очень много дат из календаря (у каждой привычки свое множество дат).

  1. Что лучше использовать - sharedPreferences или SQLite?
  2. Какой наилучший способ сохранить даты одной привычки, чтобы они не перемешались с датами другой привычки, и я могла их все быстро достать (или хотя бы все даты для одного месяца для данной привычки)?
  3. И в каком формате их лучше хранить (String, int)?

Ответы (2 шт):

Автор решения: KoVadim
  1. Если дат не много - используйте sharedPreferences. Если много (думаю десятки и больше) и по ним нужно будет делать разные выборки, SQLite будет значительно удобнее.
  2. Тут сложно сказать точно, надо смотреть целевую задачу, но возможно, для этого нужна будет одна таблица с двумя столбцами дата и id привычки. Конечно, будет ещё одна таблица, где по id привычки будет храниться имя.
  3. Дату лучше сохранять в виде DateTime (для sqlite это просто INTEGER ) и тогда станет сразу доступна куча полезных функций.

Чтобы выбрать все даты для какой-то привычки для текущего месяца, можно посмотреть в этот вопрос https://stackoverflow.com/questions/36820890/select-data-from-current-month-in-android-with-sqlite

и составить где-то такой запрос:

SELECT hdate 
FROM habbits
WHERE
  strftime('%Y',hdate) = strftime('%Y',date('now'))
  AND
  strftime('%m',hdate) = strftime('%m',date('now'))
→ Ссылка
Автор решения: Arty Morris

Дату всегда нужно хранить в формате long

→ Ссылка