Dites, nous avons une table créée comme:
create table notes (_id integer primary key autoincrement, created_date date)
Pour insérer un disque, 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 maintenant? Pour que ce soit clair, le
initialValues.put("date_created", "datetime('now')");
N'est-ce pas la bonne solution. Il suffit de définir la colonne sur "datetime ('now')" text.
Vous ne pouvez pas utiliser la fonction datetime avec le wrapper "ContentValues" Java). Vous pouvez également utiliser:
SQLiteDatabase.execSQL afin que vous puissiez entrer une requête SQL brute.
mDb.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
Ou les capacités Java date/heure:
// set the format to sql date time
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", dateFormat.format(date));
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
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
create table notes (
_id integer primary key autoincrement,
created_date date default CURRENT_DATE
)
Méthode 1
CURRENT_TIME – Inserts only time
CURRENT_DATE – Inserts only date
CURRENT_TIMESTAMP – Inserts both time and date
CREATE TABLE users(
id INTEGER PRIMARY KEY,
username TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Méthode 2
db.execSQL("INSERT INTO users(username, created_at)
VALUES('ravitamada', 'datetime()'");
Méthode Utilisation de Java Fonctions de date
private String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = new Date();
return dateFormat.format(date);
}
ContentValues values = new ContentValues();
values.put('username', 'ravitamada');
values.put('created_at', getDateTime());
// insert the row
long id = db.insert('users', null, values);
Il y a plusieurs options que vous pouvez utiliser:
Pour moi, le problème semble que vous envoyez "datetime('now')"
sous forme de chaîne plutôt que de valeur.
Mon idée est de trouver un moyen de saisir la date/heure actuelle et de l'envoyer à votre base de données sous forme de valeur date/heure, ou de trouver un moyen d'utiliser le paramètre (DATETIME('NOW'))
Intégré de SQLite
Consultez les réponses à la question cette question de SO.com - elles pourraient vous conduire dans la bonne direction.
Espérons que cela aide!
Vous pouvez utiliser la fonction de Java, à savoir:
ContentValues cv = new ContentValues();
cv.put(Constants.DATE, Java.lang.System.currentTimeMillis());
De cette façon, dans votre base de données, vous enregistrez un numéro.
Ce nombre pourrait être interprété comme suit:
DateFormat dateF = DateFormat.getDateTimeInstance();
String data = dateF.format(new Date(l));
Au lieu de l dans new Date (l), vous devez insérer le numéro dans la colonne de date.
Donc, vous avez votre date.
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 mars 2012 16.07.42
Sur la base de @ e-satis answer, j'ai créé une méthode privée sur ma classe "DBTools". L'ajout de la date actuelle est donc très simple:
...
import Java.text.SimpleDateFormat;
import Java.util.ArrayList;
import Java.util.Date;
...
private String getNow(){
// set the format to sql date time
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
return dateFormat.format(date);
}
...
Utilisez-le maintenant comme ceci: values.put("lastUpdate", getNow());
Cet exemple de code peut faire ce que vous voulez:
Fonctionne pour moi parfait:
values.put(DBHelper.COLUMN_RECEIVEDATE, geo.getReceiveDate().getTime());
Enregistrez votre date comme un long.
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 (" maintenant "))"