Angenommen, wir haben eine Tabelle erstellt als:
create table notes (_id integer primary key autoincrement, created_date date)
Zum Einfügen eines Datensatzes 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 now? Um es klar zu machen, die
initialValues.put("date_created", "datetime('now')");
Ist nicht die richtige Lösung. Es wird lediglich die Spalte auf "datetime ('now')" Text gesetzt.
Sie können die datetime-Funktion nicht mit dem Java wrapper "ContentValues" verwenden. Sie können entweder Folgendes verwenden:
SQLiteDatabase.execSQL, damit Sie eine unformatierte SQL-Abfrage eingeben können.
mDb.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
Oder die Java Datum/Uhrzeit-Funktionen:
// 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);
In meinem Code verwende ich DATETIME DEFAULT CURRENT_TIMESTAMP
als Typ und Einschränkung der Spalte.
In Ihrem Fall wäre Ihre Tabellendefinition
create table notes (
_id integer primary key autoincrement,
created_date date default CURRENT_DATE
)
Methode 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
);
Methode 2
db.execSQL("INSERT INTO users(username, created_at)
VALUES('ravitamada', 'datetime()'");
Methode Mit Java Datumsfunktionen
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);
Es gibt einige Optionen, die Sie verwenden können:
Für mich sieht das Problem so aus, als würden Sie "datetime('now')"
als Zeichenfolge und nicht als Wert senden.
Mein Gedanke ist, eine Möglichkeit zu finden, das aktuelle Datum und die aktuelle Uhrzeit zu erfassen und als Datums- und Uhrzeitwert an Ihre Datenbank zu senden, oder eine Möglichkeit zu finden, das in SQLite integrierte (DATETIME('NOW'))
Parameter
Schauen Sie sich die Antworten auf diese SO.com-Frage an - sie könnten Sie in die richtige Richtung führen.
Hoffentlich hilft das!
Sie können die Funktion von Java das ist:
ContentValues cv = new ContentValues();
cv.put(Constants.DATE, Java.lang.System.currentTimeMillis());
Auf diese Weise speichern Sie in Ihrer Datenbank eine Nummer.
Diese Nummer könnte folgendermaßen interpretiert werden:
DateFormat dateF = DateFormat.getDateTimeInstance();
String data = dateF.format(new Date(l));
Anstelle von l in neues Datum (l) müssen Sie die Nummer in die Datumsspalte einfügen.
Du hast also dein Date.
Zum Beispiel speichere ich in meiner Datenbank diese Nummer: 1332342462078
Aber wenn ich die obige Methode aufrufe, habe ich folgendes Ergebnis: 21.03.2012 16.07.42
Basierend auf der @ e-satis-Antwort habe ich eine private Methode für meine "DBTools" -Klasse erstellt, sodass das Hinzufügen des aktuellen Datums jetzt ganz einfach ist:
...
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);
}
...
Benutze es jetzt so: values.put("lastUpdate", getNow());
Dieses Codebeispiel kann tun, was Sie wollen:
Funktioniert bei mir perfekt:
values.put(DBHelper.COLUMN_RECEIVEDATE, geo.getReceiveDate().getTime());
Speichern Sie Ihr Datum als lange.
Stellen Sie sicher, dass das Feld nicht gleichzeitig mit dem Versuch, einen Standardzeitstempel mit dem Ausdruck "(DATETIME ('now'))" einzufügen, als "not null" markiert ist.