ich testen, ob ich Strings in meine SQLite-Datenbank in der folgenden Tabelle passieren könnte:Warum sollte ich Datetime in SQL verwenden?
CREATE TABLE TIMES(
ID INT PRIMARY KEY ,
TIME_START DATETIME DEFAULT CURRENT_TIMESTAMP ,
TIME_STOP DATETIME ,
CONSTRAINT FUTURE_DATE CHECK
(TIME_START >= CURRENT_TIMESTAMP AND TIME_STOP >= CURRENT_TIMESTAMP)
);
Wie so:
INSERT INTO TIMES VALUES (1, "2016-07-31 07:08:00", NULL)
Es ging durch, kein Problem. Ich war etwas betäubt, um dies zu sehen, also versuchte ich einen anderen Wert:
Und es ging auch durch. Das hat mich beunruhigt, da es nur Werte in, nicht ein paar Zahlen erlaubt. Ich habe einige andere Werte ausprobiert:
INSERT INTO TIMES VALUES (3, "9999999999:::::::::", NULL);
INSERT INTO TIMES VALUES (4, "9999999999 99:99:99", NULL);
INSERT INTO TIMES VALUES (6, "this is some really random text", NULL);
INSERT INTO TIMES VALUES (6, "9999999999999999999", NULL);
Alle außer dem letzten funktionierten. Meine Frage ist, warum Datum Datum verwenden, wenn es die Art der eingehenden Daten nicht validiert? Kann nicht einfach CHAR
verwenden (in der Tat hat CHAR
mehr Einschränkungen als , begrenzt es die Anzahl der Zeichen)?
Alle diese getestet auf:
- http://sqliteonline.com/
- Pythons
sqlite3
Warum sollte ich dann irgendwas tippen? Hat das einen Vorteil? (Außer zu wissen, welche Typen wo sein sollten) –
Für die Kompatibilität mit anderen SQL DBs. –