SQLite - Datum & Uhrzeit

SQLite unterstützt fünf Datums- und Uhrzeitfunktionen wie folgt:

Sr.Nr. Funktion Beispiel
1 Datum (Zeitleiste, Modifikatoren ...) Dies gibt das Datum in diesem Format zurück: JJJJ-MM-TT
2 Zeit (Zeitleiste, Modifikatoren ...) Dies gibt die Zeit als HH: MM: SS zurück
3 Datum / Uhrzeit (Zeitleiste, Modifikatoren ...) Dies gibt JJJJ-MM-TT HH: MM: SS zurück
4 julianday (timestring, modifikatoren ...) Dies gibt die Anzahl der Tage seit Mittag in Greenwich am 24. November 4714 v. Chr. Zurück
5 strftime (Zeitleiste, Modifikatoren ...) Dies gibt das Datum zurück, das gemäß der Formatzeichenfolge formatiert wurde, die als erstes Argument angegeben wurde, das gemäß den unten erläuterten Formatierern formatiert wurde.

Alle oben genannten fünf Datums- und Zeitfunktionen verwenden eine Zeitzeichenfolge als Argument. Auf die Zeitzeichenfolge folgen null oder mehr Modifikatoren. Die Funktion strftime () verwendet auch eine Formatzeichenfolge als erstes Argument. Im folgenden Abschnitt erfahren Sie mehr über verschiedene Arten von Zeitzeichenfolgen und Modifikatoren.

Zeitstrings

Eine Zeitzeichenfolge kann in einem der folgenden Formate vorliegen:

Sr.Nr. Zeitzeichenfolge Beispiel
1 JJJJ-MM-TT 2010-12-30
2 JJJJ-MM-TT HH: MM 2010-12-30 12:10
3 JJJJ-MM-TT HH: MM: SS.SSS 2010-12-30 12: 10: 04.100
4 MM-TT-JJJJ HH: MM 30-12-2010 12:10
5 HH: MM 12:10
6 JJJJ-MM-TTTHH: MM 2010-12-30 12:10
7 HH: MM: SS 12:10:01
8 JJJJMMTT HHMMSS 20101230 121001
9 jetzt 2013-05-07

Sie können das "T" als Literalzeichen zwischen Datum und Uhrzeit verwenden.

Modifikatoren

Auf die Zeitzeichenfolge können null oder mehr Modifikatoren folgen, die Datum und / oder Uhrzeit ändern, die von einer der oben genannten fünf Funktionen zurückgegeben werden. Modifikatoren werden von links nach rechts angewendet.

Die folgenden Modifikatoren sind in SQLite verfügbar:

  • NNN Tage
  • NNN Stunden
  • NNN Minuten
  • NNN.NNNN Sekunden
  • NNN Monate
  • NNN Jahre
  • Anfang des Monats
  • Anfang des Jahres
  • Tagesanfang
  • Wochentag N.
  • unixepoch
  • localtime
  • utc

Formatierer

SQLite bietet eine sehr praktische Funktion strftime()um ein Datum und eine Uhrzeit zu formatieren. Sie können die folgenden Ersetzungen verwenden, um Datum und Uhrzeit zu formatieren.

Auswechslung Beschreibung
% d Tag des Monats, 01-31
% f Sekundenbruchteil, SS.SSS
% H. Stunde, 00-23
% j Tag des Jahres, 001-366
% J. Julianische Tagesnummer, DDDD.DDDD
% m Monat 00-12
% M. Minute, 00-59
% s Sekunden seit dem 01.01.1970
% S. Sekunden, 00-59
% w Wochentag 0-6 (0 ist Sonntag)
% W. Woche des Jahres, 01-53
% Y. Jahr, JJJJ
%% % Symbol

Beispiele

Probieren wir jetzt verschiedene Beispiele mit der SQLite-Eingabeaufforderung aus. Der folgende Befehl berechnet das aktuelle Datum.

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

Der folgende Befehl berechnet den letzten Tag des aktuellen Monats.

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

Der folgende Befehl berechnet Datum und Uhrzeit für einen bestimmten UNIX-Zeitstempel 1092941466.

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

Der folgende Befehl berechnet Datum und Uhrzeit für einen bestimmten UNIX-Zeitstempel 1092941466 und kompensiert Ihre lokale Zeitzone.

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

Der folgende Befehl berechnet den aktuellen UNIX-Zeitstempel.

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

Der folgende Befehl berechnet die Anzahl der Tage seit der Unterzeichnung der US-Unabhängigkeitserklärung.

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

Der folgende Befehl 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

Der folgende Befehl berechnet das Datum des ersten Dienstag im Oktober für das laufende Jahr.

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

Der folgende Befehl berechnet die Zeit seit der UNIX-Epoche in Sekunden (wie strftime ('% s', 'now'), außer Bruchteil).

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

Verwenden Sie zum Konvertieren zwischen UTC- und lokalen Zeitwerten beim Formatieren eines Datums die folgenden Modifikatoren utc oder localtime:

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