SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Funktionsweise der DateTime()-Funktion in SQLite

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.