Das SQLite datetime()
Mit der Funktion können Sie einen Datums- und Zeitwert basierend auf einer Zeitzeichenfolge und beliebigen Modifikatoren zurückgeben.
Es gibt das Datum in diesem Format zurück:YYYY-MM-DD HH:MM:SS
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 lautet wie folgt:
datetime(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 datetime()
zu demonstrieren Funktion, die mit einem Argument verwendet wird.
SELECT datetime('now');
Ergebnis:
2020-04-28 23:56:06
Der now
time-String wird in das aktuelle Datum und die aktuelle Uhrzeit umgewandelt.
Modifizierer hinzufügen
Wir können das vorherige Ergebnis mit einem Modifikator ändern. Hier ist ein Beispiel.
SELECT datetime('now', '+3 hours');
Ergebnis:
2020-04-29 02:56:52
In diesem Fall habe ich die Zeit um drei Stunden verlängert. Angesichts der ursprünglichen Zeit führte dies auch dazu, dass das Datum auf den nächsten Tag vorverlegt wurde.
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 datetime('now', '+3 hours', 'localtime');
Ergebnis:
2020-04-29 12:58:13
In meinem Fall die localtime
Modifikator bewirkte, dass die Zeit nach vorne verschoben 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.
Hier wird wieder die ursprüngliche Ortszeit mit dem geänderten Ergebnis verglichen:
SELECT
datetime('now', 'localtime') AS "Local",
datetime('now', '+3 hours', 'localtime') AS "Modified";
Ergebnis:
Local Modified ------------------- ------------------- 2020-04-29 10:02:09 2020-04-29 13:02:09
Datum als Zeitzeichenfolge
Die obigen Beispiele verwenden now
als Zeitzeichenfolge, aber Sie können jede gültige Zeitzeichenfolge angeben.
Wenn Sie nur den Datumsteil angeben, wird der Zeitteil vollständig auf Nullen gesetzt.
SELECT datetime('2010-08-15');
Ergebnis:
2010-08-15 00:00:00
Wenn nur der Zeitteil geliefert wird, wird das Datum auf den 01.01.2000 gesetzt.
SELECT datetime('23:58:57');
Ergebnis:
2000-01-01 23:58:57
Hier ist ein Beispiel, das den Julianischen Tag als Zeitzeichenfolge verwendet.
SELECT datetime('2451545.49927083');
Ergebnis:
2000-01-01 23:58:57
datetime() vs. strftime()
Die datetime()
Funktion gibt genau dasselbe Ergebnis zurück wie strftime('%Y-%m-%d %H:%M:%S', ...)
kehrt zurück. Die datetime()
Funktion ist nur ein bequemerer Weg, dies zu tun.
SELECT
datetime('now'),
strftime('%Y-%m-%d %H:%M:%S', 'now');
Ergebnis:
datetime('now') strftime('%Y-%m-%d %H:%M:%S', 'now') ------------------- ------------------------------------ 2020-04-29 00:16:12 2020-04-29 00:16:12
Zeitraum
Wie bei allen Datums- und Zeitfunktionen von SQLite ist datetime()
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.