W mojej bazie danych Sqlite zapisałem datę w typie danych DATE. Jak mogę pobrać tę datę z kursora?Pobieranie daty z bazy danych Sqlite w Androidzie
Odpowiedz
SQLite przechowuje ciąg reprezentujący aktualny czas w UTC (GMT), używając formatu daty/czasu ISO8601. Ten format (RRRR-MM-DD GG: MM: SS) jest odpowiedni do porównań daty/czasu.
Użyj poniższego kodu, aby pobrać datę.
Cursor row = databaseHelper.query(true, TABLE_NAME, new String[] {
COLUMN_INDEX}, ID_COLUMN_INDEX + "=" + rowId,
null, null, null, null, null);
String dateTime = row.getString(row.getColumnIndexOrThrow(COLUMN_INDEX));
To zwraca łańcuch, analizować je i sformatować do lokalnej strefy czasowej i formacie:
DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = iso8601Format.parse(dateTime);
} catch (ParseException e) {
Log.e(TAG, "Parsing ISO8601 datetime failed", e);
}
long when = date.getTime();
int flags = 0;
flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME;
flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE;
flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR;
String finalDateTime = android.text.format.DateUtils.formatDateTime(context,
when + TimeZone.getDefault().getOffset(when), flags);
nadzieję, że to pomoże.
ten kod działa
String s= cursor.getString(position);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date d=new Date();
try {
d= dateFormat.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
YourObject.setDate(d);
idealny kod, ale trzeba zmodyfikować, aby ustawić wyświetlanie według ich wymagań.Ex: data, aby dodać ** textView **. ** textview.setText (dateformate.formate (d)) ** –
SQLite tak naprawdę nie ma typ DATE
(słowo kluczowe DATE
po prostu oznacza, że kolumna ma NUMERIC
powinowactwo, za Datatypes In SQLite Version 3), więc jest to do ciebie należy wybrać konwencję na jak będziesz przechowywać daty. Typowymi konwencjami są: (a) używanie liczb rzeczywistych do przechowywania dat juliańskich lub (b) używanie liczb całkowitych do przechowywania epoki Uniksa (sekundy od 1970 r., W których funkcja daty i czasu SQLite obsługuje argument "unixepoch" na Date And Time Functions).
Jeśli robisz termin przechowywania tak Unix epoki (wygodne dla Androida od nazywając .getTime()
na Date
obiektu zwraca liczbę milisekund od 1970 roku), a następnie odczytać DATE
pola SQLite jako long
i przekazać równowartość milisekundę że w konstruktorze java.util.Date
Date(long milliseconds)
. Wyglądałoby to mniej więcej tak:
SQLiteManager dbManager = new SQLiteManager(context, DB_NAME, null, VERSION);
SQLiteDatabase db = dbManager.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME,
new String[] { COLUMN_NAME_ID, COLUMN_NAME_DATE },
null, null, // selection, selectionArgs
null, null, null, null); // groupBy, having, orderBy, limit
try {
while(cursor.moveNext()) {
int id = cursor.getInt(0);
// Read the SQLite DATE as a long and construct a Java Date with it.
Date date = new Date(cursor.getLong(1)*1000);
// ...
}
} finally {
cursor.close();
db.close();
}
To jest mój preferowany sposób używania dat w SQLite i Androidzie. – Flash
Miło, ale jestem trochę zdezorientowany. Typ pola SQLite w tym przypadku powinien być DATETIME, INT lub DATE? –
- 1. Pobieranie pojedynczej wartości z SQLite w Androidzie
- 2. Dane nie włożono do bazy danych Sqlite w Androidzie
- 3. Skopiuj dwie bazy danych SQLite w folderze zasobów w Androidzie
- 4. Kiedy powinienem wywołać metodę close bazy danych SQLite w Androidzie
- 5. Utwórz bazę danych SQLite w Androidzie
- 6. Formatowanie daty z zapytania SQLite
- 7. połączenie bazy danych sqlite golang
- 8. Android: zamykanie bazy danych SQLite
- 9. Pobieranie bazy danych z rozszerzeniami reaktywnymi
- 10. Sync bazy danych sqlite z mysql
- 11. Schemat bazy danych Android Sqlite
- 12. Zapełnianie Spinner z bazy danych SQLite Android
- 13. Pobieranie nazwy bazy danych z pliku bak
- 14. Maksymalna pojemność bazy danych SQLite
- 15. Dlaczego warto korzystać z bazy danych sqlite w systemie Android?
- 16. Uzyskać minimum z kolumny bazy danych SQLite?
- 17. SQLite - pobieranie danych przy użyciu LINQ
- 18. Testowanie bazy danych SQLite Android
- 19. pobieranie danych z bazy danych jako json w rozruchu wiosennym
- 20. Pobieranie danych z bazy danych Firebase Realtime w systemie Android
- 21. Tworzenie bazy danych w JDBC Sqlite
- 22. Jak podświetlić daty kalendarza, które daty pochodzą z bazy danych
- 23. Korzystanie z SQLite z libGDX na Androidzie
- 24. Pierwsze „Nie można otworzyć bazy danych” błąd podczas kopiowania bazy danych SQLite z aktywów W Androidzie 4.2
- 25. bazy danych sqlite w języku perskim
- 26. Używanie bazy danych SQLite w Libgdx
- 27. Szyfrowanie bazy danych SQLite w C#
- 28. Ciągłe pobieranie danych z bazy danych za pomocą Java
- 29. Synchronizacja bazy danych klienta SQLite z bazą danych serwera MySQL
- 30. eksport danych z programu Excel do bazy danych sqlite
Witam Nagaraj436 Używam typu danych DATA dla daty kolumny. Więc nie mogę użyć cursor.getString –
@DeepakKataria Czy próbowałeś używać getString()? czy masz jakieś błędy z tego powodu? – TNR
użyj datatape jako daty, która pomogłaby u.i zrobić to samo. jak powiedział @ Nagaraj436, który pomaga parsować datę w formie, o której wspomniał, a także w innych formach .. użyj cursor.getString(). toString() – sankettt