Как вставить дату в sqlite через java

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

Спасибо

Ответы

Ответ 1

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

В Документация типов данных SQLite:

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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

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