Handling Dates Part 3
Teil des Abschnitts Grundlagen der SQL-Journey von Coddy — Lektion 33 von 72.
SQL stellt mehrere nützliche Funktionen zur Verfügung, um Daten zu manipulieren und zu formatieren. Hier sind einige gängige Datumsfunktionen:
DATE()- Konvertiert einen String zu einem DatumSTRFTIME()- Formatiert Daten gemäß angegebenen ParameternDATE('now')- Holt das aktuelle Datum:
Zum Beispiel einen String in ein Datum umwandeln:
SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15
SELECT DATE('now')
-- Returns current dateZum Beispiel Jahr, Monat und Tag aus einem Datum extrahieren:
-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023
-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05
-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15
-- Show combination of year and day (any separator can be used)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15
-- Use a dash separator instead
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Returns: 15-05-2023
-- Get day of week
SELECT STRFTIME('%w', '2023-05-15')
-- Returns: 1 (Monday; Sunday is 0)Häufige Format-Spezifizierer:
- %Y: Jahr (4 Ziffern)
- %m: Monat (01-12)
- %d: Tag des Monats (01-31)
- %w: Wochentag (0-6, Sonntag ist 0)
- %H: Stunde (00-23)
- %M: Minute (00-59)
- %S: Sekunde (00-59)
Sie können beliebiges Trennzeichen zwischen den Spezifizierern verwenden (z. B. -, :, /). Zum Beispiel kombinieren STRFTIME('%d-%m-%Y', date) und STRFTIME('%d:%m:%Y', date) beide Tag, Monat und Jahr — nur mit unterschiedlichen Trennzeichen.
Sie können diese Funktionen in Abfragen kombinieren:
-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>events</strong>:<strong>id</strong>,<strong>start</strong>,<strong>end</strong>
Schreibe eine Abfrage, die zeigt:
- Die Event-ID
- Das Startdatum formatiert als "DD-MM-YYYY". Nenne diese Spalte
formatted_start - Das Enddatum formatiert als "DD-MM-YYYY". Nenne diese Spalte
formatted_end - Die Dauer in Tagen zwischen Start und Ende, auf die nächste ganze Zahl gerundet. Nenne diese Spalte
duration_days
Filtere nur die Zeilen, bei denen das Jahr der Spalte start 2009 ist (STRFTIME() gibt einen String und keine Zahl zurück).
Sortiere die Ergebnisse nach der Dauer in Tagen in absteigender Reihenfolge.
Erinnerung: Um den Unterschied zwischen Daten zu berechnen, verwende: JULIANDAY(end) - JULIANDAY(start) und verwende ROUND(), um auf ganze Zahlen zu runden.
Spickzettel
SQL stellt mehrere nützliche Funktionen zur Verfügung, um Datumsangaben zu manipulieren und zu formatieren:
DATE()- Konvertiert einen String zu einem DatumSTRFTIME()- Formatiert Datumsangaben gemäß angegebenen ParameternDATE('now')- Ermittelt das aktuelle Datum
Konvertiere String zu Datum:
SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15
SELECT DATE('now')
-- Returns current dateExtrahiere Datumsteile mit STRFTIME():
-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023
-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05
-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15
-- Show combination of year and day
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15Häufige Format-Spezifizierer:
- %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)
Verwendung in WHERE-Klauseln:
-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')Berechne Datumsdifferenzen mit JULIANDAY():
JULIANDAY(end_date) - JULIANDAY(start_date)Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns