SQLite Datum & Zeit

SQLite unterstützt die folgenden fünf Datums- und Zeitfunktionen:

Nein.FunktionBeispiel
1date(timestring, modifier, modifier, ...)Gibt das Datum im Format YYYY-MM-DD zurück.
2time(timestring, modifier, modifier, ...)Gibt die Uhrzeit im Format HH:MM:SS zurück.
3datetime(timestring, modifier, modifier, ...)Gibt im Format YYYY-MM-DD HH:MM:SS zurück.
4julianday(timestring, modifier, modifier, ...)Dies gibt die Anzahl der Tage seit Mittag des 24. November 4714 v. Chr. nach Greenwich-Zeit zurück.
5strftime(format, timestring, modifier, modifier, ...)Dies gibt ein formatiertes Datum gemäß der durch den ersten Parameter angegebenen Formatzeichenfolge zurück. Siehe die Erklärung unten für die spezifischen Formate.

Die oben genannten fünf Datums- und Zeitfunktionen nehmen eine Zeitzeichenfolge als Argument. Auf die Zeitzeichenfolge folgen null oder mehr Modifikatoren. Die Funktion strftime() kann außerdem eine Formatzeichenfolge als erstes Argument annehmen. Im Folgenden werden wir die verschiedenen Arten von Zeitzeichenfolgen und Modifikatoren im Detail erklären.

Zeitzeichenfolgen

Eine Zeitzeichenfolge kann in einem der folgenden Formate vorliegen:

Nein.ZeitzeichenfolgeBeispiel
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM12-30-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

Sie können "T" als Literalzeichen zur Trennung von Datum und Uhrzeit verwenden.

Modifizierer

Auf die Zeitzeichenfolge können null oder mehr Modifikatoren folgen, die das von den oben genannten fünf Funktionen zurückgegebene Datum und/oder die Uhrzeit ändern. Die oben genannten fünf Funktionen geben alle eine Zeit zurück. Modifikatoren sollten von links nach rechts verwendet werden. Die folgenden Modifikatoren können in SQLite verwendet werden:

  • NNN Tage

  • NNN Stunden

  • NNN Minuten

  • NNN.NNNN Sekunden

  • NNN months

  • NNN years

  • start of month

  • start of year

  • start of day

  • weekday N

  • unixepoch

  • localtime

  • utc

Formatierung

SQLite bietet eine sehr praktische Funktionstrftime()zum Formatieren beliebiger Datums- und Uhrzeitangaben. Sie können die folgenden Ersetzungen verwenden, um Datum und Uhrzeit zu formatieren:

SubstitutionBeschreibung %dTag des Monats, 01-31 %fSekunden mit Bruchteil, SS.SSS %HStunde, 00-23 %jTag des Jahres, 001-366 %JJulianische Tagesnummer, DDDD.DDDD %mMonat, 00-12 %MMinute, 00-59 %sSekunden seit 1970-01-01 %SSekunde, 00-59 %wWochentag, 0-6 (0 ist Sonntag) %WWoche des Jahres, 01-53 %YJahr, YYYY %%%-Symbol

Beispiele

Nun wollen wir verschiedene Beispiele mit dem SQLite-Prompt ausprobieren. Das Folgende berechnet das aktuelle Datum:

sqlite> SELECT date('now');
2013-05-07

Das Folgende berechnet den letzten Tag des aktuellen Monats:

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

Das Folgende berechnet Datum und Uhrzeit für den angegebenen UNIX-Zeitstempel 1092941466:

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Das Folgende berechnet das Datum und die Uhrzeit für den angegebenen UNIX-Zeitstempel 1092941466 in der lokalen Zeitzone:

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 11:51:06

Das Folgende berechnet den aktuellen UNIX-Zeitstempel:

sqlite> SELECT strftime('%s','now');
1367926057

Das Folgende berechnet die Anzahl der Tage seit der Unterzeichnung der US-amerikanischen "Unabhängigkeitserklärung":

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86504.4775830326

Das Folgende berechnet die Anzahl der Sekunden seit einem bestimmten Moment im Jahr 2004:

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Das Folgende berechnet das Datum des ersten Dienstags im Oktober des aktuellen Jahres:

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

Das Folgende berechnet die Zeit in Sekunden seit der UNIX-Epoche (ähnlich wie strftime('%s','now'), außer dass sie einen Bruchteil enthält):

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Um zwischen UTC- und lokalen Zeitwerten zu konvertieren, verwenden Sie die Modifikatoren utc oder localtime beim Formatieren von Datumsangaben, wie unten gezeigt:

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite>  SELECT time('12:00', 'utc');
19:00:00
Andere Erweiterungen