SQLite hat ein date()
Funktion, mit der Sie einen Datumswert basierend auf einer Zeitzeichenfolge und beliebigen Modifikatoren zurückgeben können.
Es gibt das Datum in diesem Format zurück:YYYY-MM-DD
Um diese Funktion zu verwenden, müssen Sie eine Zeitzeichenfolge sowie alle (optionalen) Modifikatoren angeben. Mit einem Modifikator können Sie das Datum ändern, z. B. eine Anzahl von Tagen hinzufügen, es auf Ortszeit einstellen usw.
Syntax
Die Syntax von date()
Funktion geht so:
date(timestring, modifier, modifier, ...)
Die timestring
Das Argument muss eine gültige Zeitzeichenfolge sein.
Der modifier
Argumente sind optional. Sie können einen oder mehrere Modifikatoren angeben. Wenn Sie einen Modifikator angeben, muss es sich um einen gültigen Modifikator handeln.
Beispiel
Hier ist ein Beispiel, um das date()
zu demonstrieren Funktion, die mit einem Argument verwendet wird.
SELECT date('now');
Ergebnis:
2020-04-27
Der now
time-String wird in das aktuelle Datum und die aktuelle Uhrzeit konvertiert. Da ich das date()
verwende Funktion wird nur das Datum zurückgegeben.
Modifizierer hinzufügen
Wir können das vorherige Ergebnis mit einem Modifikator ändern. Hier ist ein Beispiel.
SELECT date('now', '+6 months');
Ergebnis:
2020-10-27
In diesem Fall habe ich dem Datum sechs Monate hinzugefügt.
Mehrere Modifikatoren
Wie bereits erwähnt, können Sie einen oder mehrere Modifikatoren hinzufügen. Hier ist ein Beispiel für das Hinzufügen eines weiteren Modifikators zum vorherigen Beispiel.
SELECT date('now', '+6 months', 'localtime');
Ergebnis:
2020-10-28
In meinem Fall die localtime
Modifikator führte dazu, dass dem Datum ein Tag hinzugefügt wurde.
Der Grund dafür ist die localtime
Der Modifikator geht davon aus, dass die angegebene Zeitzeichenfolge in der koordinierten Weltzeit (UTC) angegeben ist. Anschließend wird die Zeitzeichenfolge so angepasst, dass die Ortszeit angezeigt wird.
Daher erhalten Sie je nach Ortszeit möglicherweise ein anderes Ergebnis.
String-Literal als Zeitstring
Die obigen Beispiele verwenden now
als Zeitzeichenfolge, aber Sie können jede gültige Zeitzeichenfolge angeben.
Hier sind ein paar andere Beispiele.
SELECT date('2020-04-27 23:58:57');
Ergebnis:
2020-04-27
In diesem Fall wird einfach der Zeitteil aus dem Datum entfernt.
Hier ist es noch einmal, aber mit einigen Modifikatoren.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
Ergebnis:
2020-07-01
In diesem Fall wollte ich das Datum erhalten, das 6 Monate nach Beginn des Jahres des angegebenen Datums liegt.
Hier ist ein Beispiel, das den Julianischen Tag als Zeitzeichenfolge verwendet.
SELECT date('2458967.49737293');
Ergebnis:
2020-04-27
date() vs. strftime()
Das date()
Funktion gibt genau dasselbe Ergebnis zurück wie strftime('%Y-%m-%d', ...)
kehrt zurück. Das date()
Funktion ist nur ein bequemerer Weg, dies zu tun.
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
Ergebnis:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
Zeitraum
Wie bei allen Datums- und Zeitfunktionen von SQLite ist date()
funktioniert nur für Daten zwischen 0000-01-01 00:00:00 und 9999-12-31 23:59:59 (julianische Tagesnummern 1721059.5 bis 5373484.5).
Für Daten außerhalb dieses Bereichs sind die Ergebnisse nicht definiert.