Menu
Coddy logo textTech

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:

  1. DATE() - Konvertiert einen String zu einem Datum
  2. STRFTIME() - Formatiert Daten gemäß angegebenen Parametern
  3. DATE('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 date

Zum 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')
challenge icon

Aufgabe

Einfach

Verfü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 Datum
  • STRFTIME() - Formatiert Datumsangaben gemäß angegebenen Parametern
  • DATE('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 date

Extrahiere 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:15

Hä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

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen