Funktion EXTRACT - Amazon Redshift

Funktion EXTRACT

Die Funktion EXTRACT gibt einen Datums- oder Zeitteil zurück, z. B. Tag, Monat, Jahr, Stunde, Minute, Sekunde, Millisekunde oder Mikrosekunde aus einem TIMESTAMP-Wert oder -Ausdruck, TIME oder TIMETZ.

Syntax

EXTRACT ( datepart FROM { TIMESTAMP 'literal' | timestamp | time | timetz } )

Argumente

datepart

Für mögliche Werte vgl. Datumsteile für Datums- oder Zeitstempelfunktionen.

Literal

Ein Zeitstempelwert, in einfachen Anführungszeichen und nach dem TIMESTAMP-Schlüsselwort.

timestamp | times | timestz

Eine TIMESTAMP-, TIMESTAMPTZ-, TIME- oder TIMETZ-Spalte bzw. ein entsprechender Ausdruck, die/der implizit zu einem TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIME oder TIMETZ konvertiert.

Rückgabetyp

Wenn das Argument TIMESTAMP, TIME oder TIMETZ ist, wird INTEGER zurückgegeben.

Wenn das Argument TIMESTAMPTZ ist, wird DOUBLE PRECISION zurückgegeben.

Beispiele mit einer Zeitstempelspalte

Im folgenden Beispiel werden die Wochennummern für Verkäufe bestimmt, bei denen der gezahlte Preis 10 000 USD oder mehr betrug.

select salesid, extract(week from saletime) as weeknum from sales where pricepaid > 9999 order by 2; salesid | weeknum --------+--------- 159073 | 6 160318 | 8 161723 | 26 (3 rows)

Im folgenden Beispiel wird der Minutenwert aus einem Literal-Zeitstempel-Wert zurückgegeben.

select extract(minute from timestamp '2009-09-09 12:08:43'); date_part ----------- 8 (1 row)

Beispiele mit einer Zeitspalte

Die folgende Beispieltabelle TIME_TEST enthält eine Spalte TIME_VAL (Typ TIME) mit drei eingefügten Werten.

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

Im folgenden Beispiel werden die Minuten aus jedem time_val extrahiert.

select extract(minute from time_val) as minutes from time_test; minutes ----------- 0 0 58

Im folgenden Beispiel werden die Stunden aus jedem time_val extrahiert.

select extract(hour from time_val) as hours from time_test; hours ----------- 20 0 0

Im folgenden Beispiel wird Millisekunden aus einem Literalwert extrahiert.

select extract(ms from time '18:25:33.123456'); date_part ----------- 123

Beispiele mit einer TIMETZ-Spalte

Die folgende Beispieltabelle TIMETZ_TEST enthält eine Spalte TIMETZ_VAL (Typ TIMETZ) mit drei eingefügten Werten.

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

Im folgenden Beispiel werden die Stunden aus jedem timetz_val extrahiert.

select extract(hour from timetz_val) as hours from time_test; hours ----------- 4 0 5

Im folgenden Beispiel wird Millisekunden aus einem Literalwert extrahiert. Literale werden nicht in UTC konvertiert, bevor die Extraktion verarbeitet wurde.

select extract(ms from time '18:25:33.123456 EST'); date_part ----------- 123