Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL EXTRACT

Die EXTRACT-Funktion von PostgreSQL wird verwendet, um bestimmte Unterfelder wie Jahr, Monat, Tag, Stunde usw. aus Datums-/Zeitwerten abzurufen. Sie ist für die Manipulation und Analyse von Datumsangaben in SQL-Abfragen unerlässlich.

Verwendung

Die Funktion EXTRACT ist besonders nützlich, wenn du einen bestimmten Teil eines Datums-/Zeitwerts für Filter-, Gruppierungs- oder Anzeigezwecke isolieren musst. Die Syntax ist einfach:

EXTRACT(field FROM source)

In dieser Syntax steht field für den Teil des Datums/der Uhrzeit, den du extrahieren möchtest (z.B. YEAR, MONTH, DOW, DOY, EPOCH), und source ist ein beliebiger Ausdruck, der einen timestamp, date, interval oder time Wert liefert, nicht nur Literale.

Beispiele

1. Jahr extrahieren

SELECT EXTRACT(YEAR FROM '2023-10-14'::date) AS year;

Dieses Beispiel extrahiert das Jahr 2023 aus dem angegebenen Datum.

2. Extrahieren des Monats aus dem aktuellen Datum

SELECT EXTRACT(MONTH FROM CURRENT_DATE) AS month;

Hier holt die Funktion EXTRACT den aktuellen Monat aus dem Systemdatum.

3. Extrahieren der Stunde aus dem Zeitstempel

SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-10-14 15:23:45') AS hour;

Dieses Beispiel extrahiert die Stunde 15 aus dem angegebenen Zeitstempel.

4. Wochentag extrahieren

SELECT EXTRACT(DOW FROM CURRENT_DATE) AS day_of_week;

In diesem Beispiel wird der Wochentag ermittelt, wobei der Sonntag 0 und der Samstag 6 ist.

5. Verwendung von EXTRACT mit GROUP BY

SELECT EXTRACT(YEAR FROM order_date) AS order_year, COUNT(*)
FROM orders
GROUP BY order_year;

Dieses Beispiel gruppiert die Bestellungen nach Jahr und demonstriert die Verwendung von EXTRACT mit GROUP BY.

Tipps und bewährte Praktiken

  • Präzision ist wichtig. Achte darauf, dass source das richtige Datums-/Zeitformat hat, um Fehler oder unerwartete Ergebnisse zu vermeiden.
  • Kombiniere mit anderen Funktionen. Verwende EXTRACT mit GROUP BY oder ORDER BY, um die Ergebnisse nach Zeitintervallen zu ordnen.
  • Achte auf die Zeitzonen. Berücksichtige den Zeitzonen-Kontext deiner Daten, um eine genaue Extraktion sicherzustellen.
  • Prüfe auf Nullwerte. Behandle mögliche Nullen in Datums-/Zeitfeldern mit COALESCE oder ähnlichen Funktionen, um Abfragefehler zu vermeiden. Zum Beispiel:
SELECT EXTRACT(YEAR FROM COALESCE(order_date, CURRENT_DATE)) AS year;
  • Rückgabearten. EXTRACT gibt für alle Felder einen Wert mit doppelter Genauigkeit zurück, außer wenn die Quelle ein Intervall ist. In diesem Fall wird für Felder wie YEAR, MONTH usw. eine ganze Zahl zurückgegeben.
  • EXTRACT vs DATE_PART. Beide Funktionen dienen ähnlichen Zwecken, aber DATE_PART ist eine eher traditionelle Funktionssyntax in PostgreSQL. Wähle nach persönlichen oder projektbezogenen Konventionen.