2017-05-08 7 views
0

Ich habe gesucht und ich kann immer noch nicht verstehen, wie das funktioniert.SQLite löschen Zeilen nach Datum

Ich weiß, dass SQLite nicht speichert Datum Werte und wir müssen sie zu TEXT formatieren. Ich habe das schon gemacht, aber meine Frage ist, wie lösche ich sie nach Datum?

Denn wenn ich DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017' mache, werde ich Strings und nicht Daten vergleichen, also denke ich, der Vergleich wird nicht richtig sein.

Ich habe Menschen gesehen, die diese Art von Vergleichen, auch wenn es TEXT-Typ ist. Für mich ergibt das keinen Sinn.

+2

Sind Speichern Sie Ihre Reisedaten in ISO8601-Format (YYYY-MM-DD) wie empfohlen? Wenn Sie dann sind, ist die Antwort von varro richtig, wenn Sie nicht sind, sollten Sie Ihre Datenbank neu erstellen, um das richtige Format zu verwenden, und dann wird die Antwort von varro korrekt sein. –

Antwort

2

Es wird funktionieren, wenn Sie das kanonische Text-Format verwenden und die korrekte Syntax verwenden, zum Beispiel

DELETE FROM TABLE WHERE COLUMN_DATE >= '2017-05-09' 
+0

Aber am Ende des Tages sind das nicht nur Strings? –

+0

Ja - nur Zeichenfolgen (oder TEXT in SQLite-Begriffen). Wenn Sie also einen Vergleich durchführen, vergleichen Sie Strings, was bedeutet, dass '09 -05-2017 '<'10 -01-2016', weil die Strings auf diese Weise lexigraphisch sortieren, aber wenn Sie das kanonische ISO-Format verwenden, dann ' 2017-05-09 '>' 2016-01-10 ', was Sie für einen Zeitvergleich wollen. – varro