externe Tabelle (mit Date-Element) erzeugen mit SQLite3 für eine App

  • Antworten:6
Wicki11
  • Forum-Beiträge: 103

19.06.2016, 19:45:39 via Website

Hallo,

ich will für meine App extern eine SQLite-Tabelle (u.a. mit Date-Spalte) erzeugen, in den asset-Ordner stellen und von dort zu Beginn der App einlesen und in einer ListView anzeigen lassen. Das funktioniert soweit alles mit Ausnahme der Date-Spalte. Hier wird immer der Wert 0 (=1.1.1970) angezeigt. Meine Frage:
wie muss ich die INSERT-Anweisungen bezüglich der Date-Spalte formulieren ?

Gruss Wicki

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.06.2016, 07:41:10 via App

Wie sieht denn dein Insert bisher aus?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Martin Fink
  • Forum-Beiträge: 58

20.06.2016, 09:12:50 via App

das format für date ist yyyy-MM-dd, vielleicht ist das das problem

Antworten
Wicki11
  • Forum-Beiträge: 103

20.06.2016, 09:31:51 via Website

Dank für Deine Antwort.

CREATE TABLE friends (_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20) NOT NULL,vorname VARCHAR(20) NOT NULL,birthday DATE);
INSERT INTO friends (name,vorname,birthday) values("Weigelt","Siggi",'1941-12-24');
Gruß Wicki

Antworten
Wicki11
  • Forum-Beiträge: 103

20.06.2016, 10:20:32 via Website

Hallo,

Ergänzung:
Mit folgendem Insert habe ich den richtigen Wert gefunden:
INSERT INTO friends (name,vorname,birthday) values("Weigelt","Siggi",'-884304000000');

Das heißt ich habe den Long-Wert (Zeit in ms seit dem 1.1.1970) eingesetzt. Allerdings ist die manuelle Berechnung dieses Wertes ziemlich umständlich. Hat jemand eine Idee wie man das mit SQLite-Funktionen machen könnte ?

Gruß Wicki

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

20.06.2016, 10:43:45 via App

Den wert kannst du dir theoretisch berechnen lassen. Aber so ist das eigentlich schwachsinn. Ich würde schauen ob du das nicht mit der DATE() hinbrkommst

PS: Warum ist der Wert negativ??

— geändert am 20.06.2016, 10:44:15

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Wicki11
  • Forum-Beiträge: 103

20.06.2016, 10:59:54 via Website

Wert ist negativ, weil das Datum vor dem 1.1.1970 liegt.
Mein neuer erfolgreicher Versuch sieht nun so aus:
INSERT INTO friends (name,vorname,birthday) values("Weigelt","Siggi",strftime('%s','1941-12-24')*1000);
Erklärung:
strftime ist eine SQLite-Funktion, %s bedeutet Wert in sec (deshalb am Ende * 1000 um auf ms zu kommen) und '1941-12-24' ist das umzuwandelnde Datum.

Gruß Wicki

Antworten