2010-12-30 3 views
0

Ich habe eine SQLite db mit einer Tabelle, die 4 Felder enthält. Die create-Anweisung lautet:
CREATE TABLE [time] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[from] TIME NOT NULL,
[until] TIME NOT NULL,
[message] TEXT NOT NULL,
)
Zeit in SQLite als einfügen (und aktualisieren/wählen)

Nach der Erstellung möchte ich einige Testdaten hinzufügen. Dafür verwende ich:
INSERT INTO time('from','until','message') VALUES('00:00','01:00','test')

Das Ergebnis in der Datenbank
id = 1
from = 0:00:00
until = 0:00:00
message = test

Offensichtlich ist die Zeit falsch ist, was bedeutet, dass es nicht das, was ich will es sein. Was ist falsch in meiner Insert-Anweisung? habe ich schon gefunden this website, aber ich bin mir nicht sicher, wie es mir helfen soll. Natürlich könnte Beispielcode mir sehr helfen.

+0

Ich kann das nicht reproduzieren: sqlite> SELECT Zeit ([von]) Von Zeit; 00:00:00 sqlite> SELECT Zeit ([bis]) FROM Zeit; 01:00:00 – dkarp

+0

sqlite hat keinen TIME-Datentyp, entsprechend http://www.sqlite.org/datatype3.html, also haben Sie Text in Ihre 'Von' und 'Bis' Spalten eingefügt. Ich empfehle Ihnen, Datums- und Uhrzeitwerte (formatiert als "JJJJ-MM-TT HH: MM: SS.SSS") in die Zeichenfolgen aufzunehmen, die Sie in diesen Spalten speichern. Es macht nicht wirklich Sinn, Zeiten in einer Datenbank aufzuzeichnen, ohne die Daten ebenfalls aufzuzeichnen. – d5e5

Antwort

1

Ich konnte Ihre Ergebnisse auch nicht reproduzieren, ich habe das gleiche Ergebnis wie dkarp. Sie müssen Spalten in sqlite-Tabellen keinen Datentyp zuweisen. Wenn Sie also einen ungültigen Wert zuweisen, wird dieser offensichtlich ignoriert. In Ihrem Fall wurden Ihre Textwerte als Text gespeichert.

sqlite hat keinen TIME-Datentyp gemäß sqlite.org/datatype3.html, daher können Sie TEXT als Affinität für die Spalten "Von" und "Bis" zuweisen. Es macht mehr Sinn, Ihre Werte als Zeichenfolgen zu speichern, das Datum und die Zeit, anstatt Zeit enthält, allein ... so etwas wie die folgenden:

sqlite> CREATE TABLE [time] (
    ...> [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    ...> [from] TEXT NOT NULL, 
    ...> [until] TEXT NOT NULL, 
    ...> [message] TEXT NOT NULL 
    ...>); 
sqlite> 
sqlite> 
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 00:00',date('now') || ' ' || '01:00','test'); 
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 14:00',date('now') || ' ' || '15:30','test'); 
sqlite> 
sqlite> SELECT * from time; 
1|2010-12-30 00:00|2010-12-30 01:00|test 
2|2010-12-30 14:00|2010-12-30 15:30|test 
+0

In der Einrichtung, wo ich es verwende, brauche ich wirklich kein Datum. Ich bin nur in der Zeit interessiert, aber wenn TEXT verwendet wird, um die Werte zu speichern, kann ich das auch tun. Vielen Dank für Ihre Kommentare – patrix