Каков наилучший способ сохранения типа 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)