Как добавить дату в базу данных sqlite

У меня есть sqlite database

  private static final String DB_PROCESS_CREATE = "create table " + DB_TABLE_PROCESS + "(" + PROCESS_ID + " integer primary key autoincrement, " + PROCESS_DATE + " date);"; 

Я создаю его db.execSQL(DB_PROCESS_CREATE);

Как добавить значение даты в эту базу данных? Я пытался :

 String date = new SimpleDateFormat("yyyy.MM.dd").format(Calendar .getInstance().getTime()); ContentValues cv = new ContentValues(); cv.put(db.PROCESS_DATE,Date.valueOf(date)); db.mDB.insert(db.DB_TABLE_PROCESS, null, cv)); 

Но тогда я получаю error :

 "The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)". 

Solutions Collecting From Web of "Как добавить дату в базу данных sqlite"

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

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String date = sdf.format(new Date()); 

В базу данных вставить строку 'date'

Формат даты в sqlite должен иметь следующий формат:

 YYYY-MM-DD YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM:SS YYYY-MM-DD HH:MM:SS.SSS YYYY-MM-DDTHH:MM YYYY-MM-DDTHH:MM:SS YYYY-MM-DDTHH:MM:SS.SSS HH:MM HH:MM:SS HH:MM:SS.SSS now DDDDDDDDDD 

Для получения дополнительной информации см. http://www.sqlite.org/lang_datefunc.html

Вы не можете хранить дату в SQLite напрямую. Например, вы можете сохранить его как целое значение:

 ContentValues cv = new ContentValues(); cv.put(db.PROCESS_DATE, new Date().getTime()); db.mDB.insert(db.DB_TABLE_PROCESS, null, cv)); 

В этом случае ваше поле даты должно быть объявлено как целое:

 private static final String DB_PROCESS_CREATE = "create table " + DB_TABLE_PROCESS + "(" + PROCESS_ID + " integer primary key autoincrement, " + PROCESS_DATE + " integer);"; 

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

  1. ТЕКСТ как строки ISO8601 («ГГГГ-ММ-ДД ЧЧ: ММ: SS.SSS»).
  2. REAL, как число юлианских дней, число дней с полудня в Гринвиче 24 ноября 4714 года до н.э. согласно пролептическому григорианскому календарю.
  3. INTEGER as Unix Time, количество секунд с 1970-01-01 00:00:00 UTC. Приложения могут выбирать даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени.

См. http://www.sqlite.org/datatype3.html

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