Powiedzmy, że mamy tabelę utworzoną jako:
create table notes (_id integer primary key autoincrement, created_date date)
Aby wstawić rekord, użyłbym
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
Ale jak ustawić kolumnę date_created na teraz ? Aby było jasne, plik
initialValues.put("date_created", "datetime('now')");
To nie jest właściwe rozwiązanie. Po prostu ustawia kolumnę na tekst „datetime ('now')”.
android
sqlite
content-values
droidguy
źródło
źródło
Odpowiedzi:
Nie można używać funkcji daty i godziny za pomocą opakowania Java „ContentValues”. Możesz użyć:
SQLiteDatabase.execSQL, dzięki czemu można wprowadzić surowe zapytanie SQL.
Lub funkcje daty i godziny w języku Java:
źródło
W moim kodzie używam
DATETIME DEFAULT CURRENT_TIMESTAMP
jako typu i ograniczenia kolumny.W twoim przypadku twoja definicja tabeli byłaby
źródło
Metoda 1
Metoda 2
Metoda 3 Korzystanie z funkcji daty w języku Java
źródło
Istnieje kilka opcji, których możesz użyć:
źródło
ContentValues
iupdate()
po prostu umieszcza ciągDATETIME('now')
w kolumnie.DEFAULT CURRENT_TIMESTAMP
a później użyłemSystem.currentTimeMillis()
do aktualizacji. Widzę różnicę godzinową.Dla mnie problem wygląda na to, że wysyłasz
"datetime('now')"
jako ciąg znaków, a nie jako wartość.Moim pomysłem jest znalezienie sposobu na pobranie bieżącej daty / godziny i wysłanie jej do bazy danych jako wartości daty / czasu lub znalezienie sposobu na użycie wbudowanego
(DATETIME('NOW'))
parametru SQLiteSprawdź odpowiedzi na to pytanie SO.com - mogą one poprowadzić Cię we właściwym kierunku.
Mam nadzieję, że to pomoże!
źródło
Możesz skorzystać z funkcji java czyli:
W ten sposób w swojej bazie danych zapisujesz numer.
Liczbę tę można zinterpretować w następujący sposób:
Zamiast l do nowej daty (l), należy wstawić liczbę do kolumny daty.
Więc masz swoją randkę.
Na przykład zapisuję w mojej bazie danych ten numer: 1332342462078
Ale kiedy wywołuję powyższą metodę, otrzymuję następujący wynik: 21-mar-2012 16.07.42
źródło
Na podstawie odpowiedzi @ e-satis utworzyłem prywatną metodę na mojej klasie „DBTools”, więc dodanie aktualnej daty jest teraz naprawdę łatwe:
Użyj go teraz w ten sposób:
values.put("lastUpdate", getNow());
źródło
U mnie działa idealnie:
Zachowaj datę jako długą.
źródło
Ten przykład kodu może zrobić, co chcesz:
http://androidcookbook.com/Recipe.seam?recipeId=413
źródło
Upewnij się, że pole nie jest oznaczone jako „nie jest puste” w tym samym czasie, gdy próbujesz wstawić domyślny znacznik czasu za pomocą wyrażenia „(DATETIME ('teraz'))”
źródło