Dites, nous avons une table créée comme:
create table notes (_id integer primary key autoincrement, created_date date)
Pour insérer un enregistrement, j'utiliserais
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
Mais comment définir la colonne date_created sur now ? Pour être clair, le
initialValues.put("date_created", "datetime('now')");
N'est pas la bonne solution. Il définit simplement la colonne sur le texte "datetime ('now')".
android
sqlite
content-values
droidguy
la source
la source
Réponses:
Vous ne pouvez pas utiliser la fonction datetime à l'aide du wrapper Java "ContentValues". Soit vous pouvez utiliser:
SQLiteDatabase.execSQL afin que vous puissiez entrer une requête SQL brute.
Ou les capacités java date / heure:
la source
Dans mon code j'utilise
DATETIME DEFAULT CURRENT_TIMESTAMP
comme type et contrainte de la colonne.Dans votre cas, votre définition de table serait
la source
Méthode 1
Méthode 2
Méthode 3 Utilisation des fonctions java Date
la source
Vous pouvez utiliser plusieurs options:
la source
ContentValues
etupdate()
, il met juste la chaîneDATETIME('now')
dans la colonne.DEFAULT CURRENT_TIMESTAMP
et plus tard utiliséSystem.currentTimeMillis()
pour mettre à jour. Je vois une heure de décalage.Pour moi, le problème semble que vous envoyez
"datetime('now')"
une chaîne plutôt qu'une valeur.Ma pensée est de trouver un moyen de saisir la date / heure actuelle et de l'envoyer à votre base de données en tant que valeur de date / heure, ou de trouver un moyen d'utiliser le
(DATETIME('NOW'))
paramètre intégré de SQLiteConsultez les réponses à cette question SO.com - elles pourraient vous conduire dans la bonne direction.
Espérons que cela aide!
la source
Vous pouvez utiliser la fonction de java qui est:
De cette façon, dans votre base de données, vous enregistrez un numéro.
Ce nombre pourrait être interprété de cette manière:
Au lieu de l dans la nouvelle date (l), vous devez insérer le nombre dans la colonne de date.
Alors, vous avez votre rendez-vous.
Par exemple, j'enregistre dans ma base de données ce numéro: 1332342462078
Mais quand j'appelle la méthode ci-dessus, j'ai ce résultat: 21-mar-2012 16.07.42
la source
Sur la base de la réponse @ e-satis, j'ai créé une méthode privée sur ma classe "DBTools", donc l'ajout de la date actuelle est maintenant très simple:
Utilisez-le maintenant comme ceci:
values.put("lastUpdate", getNow());
la source
Fonctionne pour moi parfait:
Gardez votre date comme un long.
la source
Cet exemple de code peut faire ce que vous voulez:
http://androidcookbook.com/Recipe.seam?recipeId=413
la source
Assurez-vous que le champ n'est pas marqué comme 'non nul' en même temps que vous essayez d'insérer un horodatage par défaut à l'aide de l'expression "(DATETIME ('now'))"
la source