EXTRACT
Gibt den angegebenen Teil eines Datums, einer Uhrzeit oder eines Intervalls zurück.
PostgreSQL 17.9
EXTRACT(field FROM source)- field
- Gewünschter Teil als Schlüsselwort ohne AnführungszeichenSchlüsselwortCENTURYDAYDECADEDOWDOYEPOCHHOURISODOWISOYEARJULIANMICROSECONDSMILLENNIUMMILLISECONDSMINUTEMONTHQUARTERSECONDTIMEZONETIMEZONE_HOURTIMEZONE_MINUTEWEEKYEAR
- FROM source
- Datum, Uhrzeit oder Intervalltimestamp | interval
Rückgabewert
Zahl (numeric), zum Beispiel 3 für MONTH; bei SECOND mit Nachkommastellen; EPOCH gibt für ein Datum die Sekunden seit 1970-01-01 00:00 UTC und für ein Intervall seine Länge in Sekunden
Beispiele
Jahr aus einem Datum
PostgreSQL 17.9
SELECT EXTRACT(
YEAR
FROM TIMESTAMP '2023-01-01'
);Geburtsjahr aus einer Tabelle
PostgreSQL 17.9
SELECT member_name,
EXTRACT(
YEAR
FROM birthday
) AS birth_year
FROM FamilyMembers;Sekunden in einem Intervall
PostgreSQL 17.9
SELECT EXTRACT(
EPOCH
FROM INTERVAL '1 day 2 hours'
);DOW und ISODOW für einen Sonntag
PostgreSQL 17.9
SELECT EXTRACT(
DOW
FROM DATE '2024-03-10'
) AS dow,
EXTRACT(
ISODOW
FROM DATE '2024-03-10'
) AS isodow;Woche und ISO-Jahr am Jahreswechsel
PostgreSQL 17.9
SELECT EXTRACT(
WEEK
FROM DATE '2021-01-01'
) AS week,
EXTRACT(
ISOYEAR
FROM DATE '2021-01-01'
) AS iso_year,
EXTRACT(
YEAR
FROM DATE '2021-01-01'
) AS year;Details
Das ist die Schreibweise aus dem SQL-Standard; DATE_PART macht dasselbe, gibt aber double precision zurück.
Wochentag: DOW gibt 0 für Sonntag und 6 für Samstag, ISODOW geht von 1 für Montag bis 7 für Sonntag. DAYOFWEEK in MySQL zählt anders: Sonntag ist 1, Samstag ist 7.
WEEK ist die ISO-Wochennummer: Eine Woche beginnt am Montag, und die ersten Januartage können zur letzten Woche des Vorjahres gehören. Deshalb verwendest du die Wochennummer zusammen mit ISOYEAR, nicht mit YEAR.