SQLite Datum & Zeit
SQLite unterstützt die folgenden fünf Datums- und Zeitfunktionen:
| Nein. | Funktion | Beispiel |
|---|---|---|
| 1 | date(timestring, modifier, modifier, ...) | Gibt das Datum im Format YYYY-MM-DD zurück. |
| 2 | time(timestring, modifier, modifier, ...) | Gibt die Uhrzeit im Format HH:MM:SS zurück. |
| 3 | datetime(timestring, modifier, modifier, ...) | Gibt im Format YYYY-MM-DD HH:MM:SS zurück. |
| 4 | julianday(timestring, modifier, modifier, ...) | Dies gibt die Anzahl der Tage seit Mittag des 24. November 4714 v. Chr. nach Greenwich-Zeit zurück. |
| 5 | strftime(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. | Zeitzeichenfolge | Beispiel |
|---|---|---|
| 1 | YYYY-MM-DD | 2010-12-30 |
| 2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
| 3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
| 4 | MM-DD-YYYY HH:MM | 12-30-2010 12:10 |
| 5 | HH:MM | 12:10 |
| 6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
| 7 | HH:MM:SS | 12:10:01 |
| 8 | YYYYMMDD HHMMSS | 20101230 121001 |
| 9 | now | 2013-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:
| Substitution | Beschreibung | %d | Tag des Monats, 01-31 | %f | Sekunden mit Bruchteil, 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 1970-01-01 | %S | Sekunde, 00-59 | %w | Wochentag, 0-6 (0 ist Sonntag) | %W | Woche des Jahres, 01-53 | %Y | Jahr, 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