J'ai sqlite database
private static final String DB_PROCESS_CREATE = "create table "
+ DB_TABLE_PROCESS + "(" + PROCESS_ID
+ " integer primary key autoincrement, "
+ PROCESS_DATE + " date);";
Je le crée db.execSQL(DB_PROCESS_CREATE);
Comment ajouter une valeur de date dans cette base de données? J'ai essayé :
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));
Mais je reçois error
:
"The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)".
Maintenant, lorsque vous souhaitez insérer la date dans la base de données, vous pouvez utiliser ce code.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
Dans la base de données, insérez la chaîne 'date'
Le format de date dans sqlite doit être au format suivant:
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
Pour plus de détails, jetez un œil: http://www.sqlite.org/lang_datefunc.html
Vous ne pouvez pas stocker la date directement dans SQLite. Par exemple, vous pouvez le stocker en tant que valeur entière:
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE, new Date().getTime());
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
Dans ce cas, votre champ de date doit être déclaré comme un entier:
private static final String DB_PROCESS_CREATE = "create table "
+ DB_TABLE_PROCESS + "(" + PROCESS_ID
+ " integer primary key autoincrement, "
+ PROCESS_DATE + " integer);";
À partir des documents SQLite: SQLite n'a pas de classe de stockage réservée pour le stockage des dates et/ou des heures. Au lieu de cela, les fonctions de date et d'heure intégrées de SQLite sont capables de stocker des dates et des heures sous forme de valeurs TEXT, REAL ou INTEGER:
La meilleure façon de mettre une date dans une base de données serait d'utiliser sa valeur longue. J'ai essayé de faire ce que vous faisiez et il y avait une erreur similaire. Au lieu d'une chaîne, entrez une valeur numérique. Cela peut prendre la valeur longue, qui, je crois, est la valeur en millisecondes. Il peut ensuite être reconverti lorsque vous le retirez.