Funzione EXTRACT - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzione EXTRACT

La funzione EXTRACT restituisce una parte della data o dell'ora da un valore TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND. Gli esempi includono un giorno, mese, ora, minuto, secondo, millisecondo o microsecondo da un timestamp.

Sintassi

EXTRACT(datepart FROM source)

Argomenti

datepart

Il sottocampo di una data o ora da estrarre, ad esempio un giorno, un mese, un anno, un'ora, un minuto, un secondo, un millisecondo o un microsecondo. Per un elenco dei valori possibili, consultare Parti di data per funzioni di data e timestamp.

source (origine)

Colonna o espressione che restituisce un tipo di dati TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND.

Tipo restituito

NUMERO INTERO se il valore di origine restituisce il tipo di dati TIMESTAMP, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND.

DOUBLE PRECISION se il valore di origine restituisce il tipo di dati TIMESTAMPTZ.

Esempi con TIMESTAMP

Nel seguente esempio viene determinato il numero di settimane per le vendite il cui prezzo pagato è stato uguale o superiore a 10.000 USD. Questo esempio utilizza i dati TICKIT. Per ulteriori informazioni, consulta Database di esempio.

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

L'esempio seguente restituisce il valore di minuti da un valore di timestamp letterale.

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

L'esempio seguente restituisce il valore in millisecondi da un valore di timestamp letterale.

select extract(ms from timestamp '2009-09-09 12:08:43.101'); date_part ----------- 101

Esempi con TIMESTAMPTZ

L'esempio seguente restituisce il valore di anno da un valore di timestamp letterale.

select extract(year from timestamptz '1.12.1997 07:37:16.00 PST'); date_part ----------- 1997

Esempi con TIME

La tabella di esempio seguente TIME_TEST ha una colonna TIME_VAL (tipo TIME) con tre valori inseriti.

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

Nell'esempio seguente vengono estratti i minuti da ogni timetz_val.

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

Nell'esempio seguente vengono estratte le ore da ogni time_val.

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

Nell'esempio seguente vengono estratti i millisecondi da un valore letterale.

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

Esempi con TIMETZ

La tabella di esempio seguente TIMETZ_TEST ha una colonna TIMETZ_VAL (tipo TIMETZ) con tre valori inseriti.

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

Nell'esempio seguente vengono estratte le ore da ogni timez_val.

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

Nell'esempio seguente vengono estratti i millisecondi da un valore letterale. I valori letterali non vengono convertiti in UTC prima dell'elaborazione dell'estrazione.

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

L'esempio seguente restituisce l'ora dell'offset del fuso orario, da UTC da un valore timetz letterale.

select extract(timezone_hour from timetz '1.12.1997 07:37:16.00 PDT'); date_part ----------- -7

Esempi con INTERVAL YEAR TO MONTH e INTERVAL DAY TO SECOND

L'esempio seguente estrae la parte relativa al giorno 1 dall'INTERVAL DAY TO SECOND che definisce 36 ore, ovvero 1 giorno e 12 ore.

select EXTRACT('days' from INTERVAL '36 hours' DAY TO SECOND) date_part ------------------ 1

L'esempio seguente estrae la parte relativa al mese 3 da YEAR TO MONTH che definisce 15 mesi, ovvero 1 anno e 3 mesi.

select EXTRACT('month' from INTERVAL '15 months' YEAR TO MONTH) date_part ------------------ 3

L'esempio seguente estrae la parte relativa al mese 6 da 30 mesi, ovvero 2 anni e 6 mesi.

select EXTRACT('month' from INTERVAL '30' MONTH) date_part ------------------ 6

L'esempio seguente estrae la parte oraria 2 di 50 ore, ovvero 2 giorni 2 ore.

select EXTRACT('hours' from INTERVAL '50' HOUR) date_part ------------------ 2

L'esempio seguente estrae la parte relativa ai minuti 11 da 1 ora e 11 minuti 11,123 secondi.

select EXTRACT('minute' from INTERVAL '70 minutes 70.123 seconds' MINUTE TO SECOND) date_part ------------------ 11

L'esempio seguente estrae la parte dei secondi 1.11 da 1 giorno 1 ora 1 minuto 1,11 secondi.

select EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) date_part ------------------ 1.11

L'esempio seguente estrae il numero totale di ore in un INTERVAL. Ogni parte viene estratta e aggiunta a un totale.

select EXTRACT('days' from INTERVAL '50' HOUR) * 24 + EXTRACT('hours' from INTERVAL '50' HOUR) ?column? ------------------ 50

L'esempio seguente estrae il numero totale di secondi in un INTERVAL. Ogni parte viene estratta e aggiunta a un totale.

select EXTRACT('days' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 86400 + EXTRACT('hours' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 3600 + EXTRACT('minutes' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) * 60 + EXTRACT('seconds' from INTERVAL '1 day 1:1:1.11' DAY TO SECOND) ?column? ------------------ 90061.11