Wie man Datum und Uhrzeitstypen in SQLite speichert und verarbeitet
SQLite ist ein Datenbanksystem, das Daten in einer Datei speichert. Es ist ein kleines, schnelles und benutzerfreundliches Datenbanksystem, das häufig in mobilen und Webanwendungen verwendet wird.
Laut der Office-Dokumentation unterstützt SQLite keine Datum- und Uhrzeit-Typen, die vorgeschlagenen Datentypen für Datum und Uhrzeit sind:
TEXT
: Der Textdatentyp, der eine Zeichenfolge von Zeichen ist. Speichert das Datum und die Uhrzeit als Zeichenfolge im ISO 8601-Format, wie z.B.YYYY-MM-DD HH:MM:SS
.INTEGER
: Der Ganzzahldatentyp, der eine ganze Zahl ist. Speichert das Datum und die Uhrzeit als Anzahl von Sekunden seit dem 1. Januar 1970, 00:00:00 UTC, auch bekannt als Unix-Zeitstempel.REAL
: Der Datentyp für reelle Zahlen, der eine Zahl mit Dezimalpunkt ist. Speichert das Datum und die Uhrzeit als Anzahl von Tagen seit dem 24. November 4714 v. Chr., 12:00:00 UTC, auch bekannt als Julianisches Datum.
Welchen Datentyp sollte ich verwenden?
Tatsächlich können Sie jedes Format verwenden, um Datum- und Zeitdatentypen in SQLite zu speichern und zu verarbeiten, da der flexibelste Datentyp TEXT
ist, der eine Zeichenfolge von Zeichen ist.
Warum schlägt SQLite vor, TEXT
zu verwenden, um Datum und Uhrzeit im ISO 8601-Format zu speichern und zu verarbeiten, anstatt andere Formate zu verwenden? Weil SQLite einige integrierte datumsbezogene Funktionen hat, zum Beispiel timediff
, um die Zeitdifferenz zwischen zwei Daten zu berechnen, strftime
, um einen Datumswert zu formatieren.
Aber wenn Sie wirklich TEXT
verwenden, könnten Sie auf einige Probleme stoßen:
- Das Format kann von dem abweichen, was Sie erwarten, es gibt so viele verschiedene Formate.
- Sie könnten einige Informationen verlieren, zum Beispiel die Zeitzone.
- Sie können die Datum- und Uhrzeitdatentypen möglicherweise nicht vergleichen, zum Beispiel können Sie die Datum- und Uhrzeitdatentypen nicht mit dem
>
oder<
Operator vergleichen. (Einige Formate sind vergleichbar, aber nicht alle.)
Der empfohlene Weg ist, INTEGER
zu verwenden, um den Zeitstempel zu speichern. Da es sich nur um eine Zahl handelt, ist die Speicherung effizient, und es ist einfach, die Datum- und Uhrzeitdaten zu vergleichen.
Außerdem haben Sie kein "Zeitzonenproblem", da die Zeitzone zur gleichen Zeit auf der ganzen Welt genau gleich ist. Sie können sie nach Bedarf in jede Zeitzone und jedes Format formatieren.
Fazit
In der Praxis sollten Sie bei der Verarbeitung von Datum- und Zeitdatentypen in SQLite INTEGER
verwenden, um Zeitstempel zu speichern.