SQLite - Datum & Uhrzeit

Hallo da draußen, angehende Programmierer! Heute tauchen wir ein in die faszinierende Welt von Daten und Zeiten in SQLite. Als dein freundlicher Nachbar-Computerlehrer werde ich dich auf dieser Reise mit vielen Beispielen und Erklärungen führen. Also, schnall dich an und los geht's!

SQLite - Date & Time

Zeitstrings

In SQLite werden Daten und Zeiten typischerweise als Textstrings gespeichert. Das mag initially seltsam erscheinen, ist aber actually sehr flexibel und einfach zu handhaben. Sehen wir uns einige gängige Formate an:

ISO8601-Format

Das häufigste Format ist ISO8601, das so aussieht:

JJJJ-MM-TT SS:MM:SS

Zum Beispiel:

'2023-06-15 14:30:00'

Das stellt den 15. Juni 2023 um 14:30 Uhr dar.

Andere akzeptierte Formate

SQLite ist sehr nachsichtig, wenn es um Daten- und Zeitformate geht. Hier sind einige andere akzeptierte Formate:

JJJJ-MM-TT
JJJJ-MM-TT SS:MM
JJJJ-MM-TT SS:MM:SS.SSS
JJJJ-MM-TTTHH:MM
JJJJ-MM-TTTHH:MM:SS
JJJJ-MM-TTTHH:MM:SS.SSS
SS:MM
SS:MM:SS
SS:MM:SS.SSS

Versuchen wir ein Beispiel:

CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);

INSERT INTO events (event_name, event_date) VALUES
('Geburtstagsfeier', '2023-07-01'),
('Kinonacht', '2023-07-15 20:00'),
('Morgens joggen', '06:30');

SELECT * FROM events;

Das erstellt eine Tabelle mit verschiedenen Daten- und Zeitformaten. Pretty cool, oder?

Modifikatoren

Nun sprechen wir über Modifikatoren. Das sind besondere Schlüsselwörter, die es uns ermöglichen, Daten und Zeiten zu manipulieren. Sie sind wie magische Zauberstäbe für unsere Zeitstrings!

Gängige Modifikatoren

Hier ist eine Tabelle mit gängigen Modifikatoren:

Modifikator Beschreibung
+N days Fügt N Tage zum Datum hinzu
-N days Subtrahiert N Tage vom Datum
start of month Ändert das Datum auf den ersten Tag des Monats
start of year Ändert das Datum auf den ersten Tag des Jahres
weekday N Ändert das Datum auf den nächsten Tag, an dem der Wochentag N ist (0=Sonntag, 1=Montag, etc.)

Sehen wir uns diese in Aktion an:

SELECT
date('now') AS heute,
date('now', '+1 day') AS morgen,
date('now', '-1 month') AS letzten_monat,
date('now', 'start of month') AS monatsanfang,
date('now', 'weekday 1') AS nächster montag;

Diese Abfrage zeigt dir das heutige Datum, das Datum von morgen, das Datum von vor einem Monat, den Anfang des aktuellen Monats und das Datum des nächsten Montags. Pretty handy, oder?

Formatierer

Formatierer sind wie die Stylisten der Daten- und Zeitwelt. Sie helfen uns, unsere Daten und Zeiten auf verschiedene Weise darzustellen.

strftime()-Funktion

Die Hauptfunktion, die wir zur Formatierung verwenden, ist strftime(). Sie steht für "string format time". Hier ist die grundlegende Syntax:

strftime(format, zeit-string, modifikatoren...)

Sehen wir uns einige gängige Formatbezeichner an:

Bezeichner Beschreibung
%Y Jahr (4 Ziffern)
%m Monat (01-12)
%d Tag des Monats (01-31)
%H Stunde (00-23)
%M Minute (00-59)
%S Sekunde (00-59)
%w Wochentag (0-6 mit Sonntag=0)

Jetzt setzen wir alles zusammen:

SELECT
strftime('%Y-%m-%d', 'now') AS datum_nur,
strftime('%H:%M', 'now') AS zeit_nur,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS datum_zeit,
strftime('%w', 'now') AS wochentag,
strftime('%Y-%m-%d', 'now', '+1 month') AS nächster_monat;

Diese Abfrage zeigt dir das aktuelle Datum, die aktuelle Zeit, das aktuelle Datum und die aktuelle Zeit, den Wochentag (0-6) und das Datum nächsten Monats.

Ein spaßiges Beispiel

Lassen Sie uns mit einem spaßigen Beispiel enden. Stell dir vor, du planst eine Party und möchtest wissen, welcher Wochentag es in 100 Tagen sein wird:

SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Sonntag'
WHEN 1 THEN 'Montag'
WHEN 2 THEN 'Dienstag'
WHEN 3 THEN 'Mittwoch'
WHEN 4 THEN 'Donnerstag'
WHEN 5 THEN 'Freitag'
WHEN 6 THEN 'Samstag'
END AS party_day;

Diese Abfrage wird dir das Datum in 100 Tagen und den zugehörigen Wochentag anzeigen. Perfect für die Partyplanung!

Und das war's, Leute! Wir haben die Welt der SQLite-Daten und -Zeiten durchquert. Denke daran, Übung macht den Meister, also habe keine Angst, mit diesen Funktionen zu experimentieren. Bevor du es weißt, wirst du ein Zauberer von Daten und Zeiten sein! Frohes Coden!

Credits: Image by storyset