Angenommen, wir haben eine Tabelle erstellt als:
create table notes (_id integer primary key autoincrement, created_date date)
Um einen Datensatz einzufügen, würde ich verwenden
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
Aber wie setzt man die Spalte date_created auf jetzt ? Um es klar zu machen, die
initialValues.put("date_created", "datetime('now')");
Ist nicht die richtige Lösung. Die Spalte wird lediglich auf "datetime ('now')" - Text gesetzt.
android
sqlite
content-values
Droidguy
quelle
quelle
Antworten:
Sie können die datetime-Funktion nicht mit dem Java-Wrapper "ContentValues" verwenden. Entweder können Sie verwenden:
SQLiteDatabase.execSQL, damit Sie eine unformatierte SQL-Abfrage eingeben können.
Oder die Java-Datums- und Uhrzeitfunktionen:
quelle
In meinem Code verwende ich
DATETIME DEFAULT CURRENT_TIMESTAMP
als Typ und Einschränkung der Spalte.In Ihrem Fall wäre Ihre Tabellendefinition
quelle
Methode 1
Methode 2
Methode 3 Verwenden von Java-Datumsfunktionen
quelle
Es gibt einige Optionen, die Sie verwenden können:
quelle
ContentValues
undupdate()
, es setzt nur die ZeichenfolgeDATETIME('now')
in die Spalte.DEFAULT CURRENT_TIMESTAMP
und späterSystem.currentTimeMillis()
zum Aktualisieren verwendet. Ich sehe einen Stundenunterschied.Für mich sieht das Problem so aus,
"datetime('now')"
als würden Sie als Zeichenfolge und nicht als Wert senden .Mein Gedanke ist, eine Möglichkeit zu finden, das aktuelle Datum / die aktuelle Uhrzeit zu erfassen und als Datums- / Uhrzeitwert an Ihre Datenbank zu senden, oder eine Möglichkeit zu finden, den integrierten
(DATETIME('NOW'))
Parameter von SQLite zu verwendenSchauen Sie sich die Antworten auf diese SO.com-Frage an - sie könnten Sie in die richtige Richtung führen.
Hoffentlich hilft das!
quelle
Sie können die Funktion von Java verwenden:
Auf diese Weise speichern Sie in Ihrer Datenbank eine Nummer.
Diese Nummer könnte folgendermaßen interpretiert werden:
Anstelle von l in neues Datum (l) sollten Sie die Nummer in die Datumsspalte einfügen.
Also hast du dein Date.
Zum Beispiel speichere ich in meiner Datenbank diese Nummer: 1332342462078
Aber wenn ich die obige Methode aufrufe, habe ich dieses Ergebnis: 21-mar-2012 16.07.42
quelle
Basierend auf der Antwort von @ e-satis habe ich eine private Methode für meine "DBTools" -Klasse erstellt, sodass das Hinzufügen des aktuellen Datums jetzt ganz einfach ist:
Verwenden Sie es jetzt so:
values.put("lastUpdate", getNow());
quelle
Funktioniert bei mir perfekt:
Speichern Sie Ihr Datum als lange.
quelle
Dieses Codebeispiel kann tun, was Sie wollen:
http://androidcookbook.com/Recipe.seam?recipeId=413
quelle
Stellen Sie sicher, dass das Feld nicht gleichzeitig mit dem Ausdruck "(DATETIME ('now'))" als "nicht null" markiert ist, wenn Sie versuchen, einen Standardzeitstempel einzufügen.
quelle