0Pricing
SQL Academy · Lektion

EXTRACT, DATE_TRUNC, AGE

Extrahieren Sie Datumsbestandteile mit EXTRACT, runden Sie Zeitstempel mit DATE_TRUNC auf eine Grenze und berechnen Sie mit AGE lesbare Differenzen.

EXTRACT, DATE_TRUNC, AGE ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

EXTRACT: Einen Datumsteil auslesen

EXTRACT(part FROM ts) gibt eine einzelne numerische Komponente zurück:

SELECT EXTRACT(YEAR  FROM created_at) AS yr,
       EXTRACT(MONTH FROM created_at) AS mo,
       EXTRACT(DAY   FROM created_at) AS d,
       EXTRACT(DOW   FROM created_at) AS day_of_week
FROM orders;

Häufige EXTRACT-Bestandteile

Nützliche Bestandteile: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DOW (0=Sun), DOY (1–366), WEEK, QUARTER, EPOCH.

SELECT EXTRACT(EPOCH FROM (NOW() - created_at)) AS seconds_ago
FROM events;

DATE_TRUNC: Auf eine Grenze runden

DATE_TRUNC(unit, ts) setzt alles unterhalb der angegebenen Einheit auf null — die nützlichste Funktion für Berichte mit Zeit-Buckets:

SELECT date_trunc('day',   NOW());   -- 2024-03-15 00:00:00
SELECT date_trunc('week',  NOW());
SELECT date_trunc('month', NOW());
SELECT date_trunc('hour',  NOW());

Berichte mit Zeit-Buckets

Monatlicher Umsatz mit date_trunc:

SELECT date_trunc('month', created_at) AS month,
       SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;

Jahr bis heute / Monat bis heute

Vergleichen Sie den aktuellen Zeitraum mit demselben Zeitpunkt im Vorjahr:

-- This month so far
SELECT SUM(total) FROM orders
WHERE created_at >= date_trunc('month', NOW())
  AND created_at <  date_trunc('month', NOW()) + INTERVAL '1 month';

AGE: Kalenderabhängige Differenz

AGE gibt Jahre + Monate + Tage zurück, nicht nur Tage:

SELECT AGE('2024-03-15', '2020-12-01');
-- → '3 years 3 months 14 days'

SELECT EXTRACT(YEAR FROM AGE('2024-03-15', '2020-12-01'));  -- 3

Verhalten von AGE mit zwei Argumenten

Die Variante mit einem Argument vergleicht mit current_date:

SELECT AGE(birth_date) FROM users LIMIT 5;

Logik für Wochentage

EXTRACT(DOW): 0=Sonntag … 6=Samstag. ISO_DOW: 1=Montag … 7=Sonntag.

SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7);  -- weekend orders

Zeitzonen in EXTRACT

EXTRACT für TIMESTAMPTZ verwendet die Zeitzone der Sitzung. Verwenden Sie AT TIME ZONE, um sie festzulegen:

SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'UTC') FROM events;
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'Europe/Berlin') FROM events;

Nach einem benutzerdefinierten Zeitfenster runden

Für nicht kalendergebundene Zeitfenster (z. B. alle 5 Minuten) verwenden Sie Arithmetik:

SELECT to_timestamp(
  floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;

Funktionale Indizes für die Trunkierung

Wenn Sie häufig date_trunc('day', created_at) in GROUP BY verwenden, hilft ein funktionaler Index:

CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));

Zusammenfassung

EXTRACT + DATE_TRUNC + AGE decken die meisten Anforderungen an Berichte ab.

  • EXTRACT für einzelne Bestandteile
  • DATE_TRUNC, um auf eine Grenze zu runden
  • AGE für kalenderabhängige Zeitspannen

Kurzer Test

Sie möchten die Anzahl neuer Benutzer pro Monat ermitteln. Welche Funktion gruppiert Datumswerte nach Monaten?

Häufig gestellte Fragen

Ist die Lektion „EXTRACT, DATE_TRUNC, AGE“ kostenlos?

Ja — der vollständige Text von „EXTRACT, DATE_TRUNC, AGE“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „EXTRACT, DATE_TRUNC, AGE“?

Extrahieren Sie Datumsbestandteile mit EXTRACT, runden Sie Zeitstempel mit DATE_TRUNC auf eine Grenze und berechnen Sie mit AGE lesbare Differenzen. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „EXTRACT, DATE_TRUNC, AGE“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Datumsarithmetik und INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Zeitzonen: TIMESTAMP vs. TIMESTAMPTZ
  4. Häufige Datumsberichte (MTD, WoW, YoY)
← Zurück zu SQL Academy