Как вставить дату в sqlite через Java - PullRequest
15 голосов
/ 21 мая 2010

Я хочу создать базу данных, в которой будет храниться дата (SQLite). Теперь сначала спросите, каков правильный синтаксис для объявления столбца даты. Во-вторых, я хочу знать, как вставить в него дату после этого. И третье, что я хочу знать, это как выбирать даты между, например, чтобы выбрать все строки, которые содержат дату между 01.05.2010 и 05.06.2010.

Спасибо

Ответы [ 2 ]

32 голосов
/ 21 мая 2010

Теперь сначала спросим, ​​какой правильный синтаксис для объявления столбца даты.

Из документации по типам данных SQLite :

1.2 Дата и время Тип данных

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

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

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

Выберите. Я бы пошел на текст или INTEGER. INTEGER будет быстрее. Если вам нужно сохранить даты после 1970 года (например, даты рождения и т. Д.), То я бы пошел на ТЕКСТ. Если вам просто нужно сохранить время создания / изменения и т. Д. Для настоящего и будущего, перейдите к INTEGER.

Второе, что я хочу знать, это как вставить в него дату после этого.

Используйте PreparedStatement#setString() или #setLong() соответственно.

И третье, что я хочу знать, это как выбирать даты между, например, чтобы выбрать все строки, которые содержат дату в период с 01/05/2010 по 05/06/2010.

Для этого используйте стандартное предложение SQL BETWEEN. Сначала вам необходимо соответствующим образом преобразовать дату, используя встроенные функции даты и времени .

3 голосов
/ 08 октября 2014

Удобный синтаксис для объявления столбца даты выглядит следующим образом:

"CREATE TABLE "
            + "my_table"
            + "(date_time " 
            + " DATETIME DEFAULT CURRENT_TIMESTAMP);");

Это вставит значения по умолчанию для текущей даты и времени. Или вы можете использовать значения CURRENT_DATE или CURRENT_TIME . Вам не нужно будет вставлять метку времени каждый раз, когда вы создаете строку.

Вы можете прочитать об этом подходе здесь: Android вставляет значение даты и времени в базу данных SQLite

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