it-swarm.com.de

So fügen Sie ein Datum in die SQLite-Datenbank ein

Ich habe sqlite database

    private static final String DB_PROCESS_CREATE = "create table "
        + DB_TABLE_PROCESS + "(" + PROCESS_ID
        + " integer primary key autoincrement, "
        + PROCESS_DATE + " date);";

Ich erstelle es db.execSQL(DB_PROCESS_CREATE);

Wie füge ich einen Datumswert in diese Datenbank ein? Ich habe es versucht :

String date = new SimpleDateFormat("yyyy.MM.dd").format(Calendar
.getInstance().getTime());
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE,Date.valueOf(date));
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));

Aber dann bekomme ich error:

"The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)".
22
Kostya Khuta

Wenn Sie jetzt ein Datum in die Datenbank einfügen möchten, können Sie diesen Code verwenden.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());

In der Datenbank geben Sie den String 'Datum' ein

Das Datumsformat in SQLite sollte folgendes Format haben:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD 

Weitere Informationen finden Sie unter: http://www.sqlite.org/lang_datefunc.html

46
Homam

Sie können das Datum nicht direkt in SQLite speichern. Beispielsweise können Sie es als Ganzzahl speichern:

ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE, new Date().getTime());
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));

In diesem Fall muss Ihr Datumsfeld als Ganzzahl deklariert werden:

private static final String DB_PROCESS_CREATE = "create table "
        + DB_TABLE_PROCESS + "(" + PROCESS_ID
        + " integer primary key autoincrement, "
        + PROCESS_DATE + " integer);";

In SQLite-Dokumenten: In SQLite ist keine Speicherklasse zum Speichern von Datums- und/oder Uhrzeitangaben vorgesehen. Stattdessen können mit den integrierten Datums- und Uhrzeitfunktionen von SQLite Datums- und Uhrzeitangaben als TEXT-, REAL- oder INTEGER-Werte gespeichert werden:

  1. [~ # ~] Text [~ # ~] als ISO8601-Zeichenfolge ("JJJJ-MM-TT HH: MM: SS.SSS").
  2. [~ # ~] real [~ # ~] als julianische Tageszahlen, die Anzahl der Tage seit Mittag in Greenwich am 24. November 4714 v. nach dem proleptischen Gregorianischen Kalender.
  3. [~ # ~] Ganzzahl [~ # ~] als Unix-Zeit, die Anzahl der Sekunden seit 1970-01-01 00:00:00 UTC. In Anwendungen können Datums- und Uhrzeitangaben in einem dieser Formate gespeichert und mithilfe der integrierten Datums- und Uhrzeitfunktionen frei zwischen den Formaten konvertiert werden.

Siehe http://www.sqlite.org/datatype3.html

10
Ilya Lysenko

Der beste Weg, ein Datum in eine Datenbank einzufügen, wäre, den langen Wert davon zu verwenden. Ich habe versucht, das zu tun, was Sie getan haben, und es ist ein ähnlicher Fehler aufgetreten. Geben Sie anstelle einer Zeichenfolge einen numerischen Wert ein. Es kann den langen Wert dauern, von dem ich glaube, dass er der Millisekundenwert einer Art ist. Es kann dann wieder umgewandelt werden, wenn Sie es herausziehen.

2
Martin Estes