Каков наилучший способ сохранения типа datetime в SQLite?

Im создает приложения для Android и вам нужно сохранить дату и время записи создания. Каков наилучший способ сделать это? Мне нужно будет сравнить его позже. Например, в моих приложениях я покажу, что вся запись создается между датой A до даты B.

Ответы

Ответ 1

SQlite не имеет определенного типа datetime. Вы можете использовать типы TEXT, REAL или INTEGER, в зависимости от ваших потребностей.

Прямо от DOCS

SQLite не имеет класса хранения, зарезервированного для хранения дат и/или времени. Вместо этого встроенные функции даты и времени SQLite способны хранить даты и время как значения TEXT, REAL или INTEGER:

  • ТЕКСТ как строки ISO8601 ( "ГГГГ-ММ-ДД ЧЧ: ММ: SS.SSS" ).
  • REAL, как число юлианских дней, количество дней с полудня в Гринвиче 24 ноября 4714 г. B.C. согласно пролептическому григорианскому календарю.
  • INTEGER as Unix Time, количество секунд с 1970-01-01 00:00:00 UTC.

Приложения могут выбирать даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени.

Встроенные функции даты и времени SQLite могут быть найдены здесь.

Ответ 2

В SQLite отсутствует класс хранения, зарезервированный для хранения дат и/или раз. Вместо этого встроенные функции даты и времени SQLite могут хранить даты и время как TEXT, REAL или INTEGER значения:

ТЕКСТ как строки ISO8601 ( "ГГГГ-ММ-ДД ЧЧ: ММ: SS.SSS" ). РЕАЛЬНО как Джулиан число дней, число дней с полудня в Гринвиче в ноябре 24, 4714. B.C. согласно пролептическому григорианскому календарю. INTEGER как Unix Time, количество секунд с 1970-01-01 00:00:00 UTC. Приложения могут выбирать даты и время в любом из этих форматы и свободно конвертировать между форматами с использованием встроенной даты и функции времени.

Сказав это, я бы использовал INTEGER и сохранил секунды со времен Unix (1970-01-01 00:00:00 UTC).

Ответ 3

Для практически всех вопросов даты и времени я предпочитаю упрощать вещи, очень, очень просто... До секунд хранится в целых числах.

Целые числа всегда будут поддерживаться как целые числа в базах данных, плоских файлах и т.д. Вы делаете небольшую математику и применяете ее к другому типу, и вы можете форматировать дату в любом случае.

Выполняя это так, вам не нужно беспокоиться, когда [вставить текущую любимую базу данных здесь] заменяется на [будущую любимую базу данных], которая по совпадению не использовала формат даты, который вы выбрали сегодня.

Это просто небольшая математическая накладная (например, методы - занимает две секунды, я буду публиковать ее, если это необходимо) и упрощает работу для многих операций относительно даты/времени позже.

Ответ 4

Сохраните его в поле типа long. См. Date.getTime() и new Date(long)