

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función EXTRACT
<a name="r_EXTRACT_function"></a>

La función EXTRACT devuelve una parte de fecha u hora de un valor TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND. Algunos ejemplos son día, mes, año, hora, minuto, segundo, milisegundo o microsegundo de una marca de tiempo.

## Sintaxis
<a name="r_EXTRACT_function-synopsis"></a>

```
EXTRACT(datepart FROM source)
```

## Argumentos
<a name="r_EXTRACT_function-arguments"></a>

 *datepart*   
El subcampo de una fecha u hora que se va a extraer, como día, mes, año, hora, minuto, segundo, milisegundo o microsegundo. Para obtener los valores posibles, consulte [Partes de fecha para funciones de fecha o marca temporal](r_Dateparts_for_datetime_functions.md). 

 *origen*   
Una columna o una expresión que se evalúa como un tipo de datos de TIMESTAMP, TIMESTAMPTZ, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND.

## Tipo de retorno
<a name="r_EXTRACT_function-return-type"></a>

INTEGER si el valor de *origen* se evalúa como tipo de datos TIMESTAMP, TIME, TIMETZ, INTERVAL YEAR TO MONTH o INTERVAL DAY TO SECOND.

DOUBLE PRECISION si el valor de *origen* se evalúa como el tipo de datos TIMESTAMPTZ.

## Ejemplos con TIMESTAMP
<a name="r_EXTRACT_function-examples"></a>

En el siguiente ejemplo, se determinan los números de las semanas para las ventas en las que el precio pagado fue 10 000 USD o más. En este ejemplo, se utilizan los datos de TICKIT. Para obtener más información, consulte [Base de datos de muestra](c_sampledb.md).

```
select salesid, extract(week from saletime) as weeknum
from sales 
where pricepaid > 9999 
order by 2;

salesid | weeknum
--------+---------
 159073 |       6
 160318 |       8
 161723 |      26
```

En el siguiente ejemplo, se devuelve el valor de minutos de un valor de marca temporal literal. 

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

En el siguiente ejemplo, se devuelve el valor de milisegundos de un valor timestamp literal. 

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

## Ejemplos con TIMESTAMPTZ
<a name="r_EXTRACT_function-examples-timestamptz"></a>

En el siguiente ejemplo, se devuelve el valor de año de un valor timestamptz literal. 

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

## Ejemplos con TIME
<a name="r_EXTRACT_function-examples-time"></a>

La siguiente tabla de ejemplo, TIME\$1TEST, tiene una columna TIME\$1VAL (tipo TIME) con tres valores insertados. 

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

En el siguiente ejemplo, se extraen los minutos de cada time\$1val.

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

En el siguiente ejemplo, se extraen las horas de cada time\$1val.

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

En el siguiente ejemplo, se extraen los milisegundos de un valor literal.

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

## Ejemplos con TIMETZ
<a name="r_EXTRACT_function-examples-timetz"></a>

La siguiente tabla de ejemplo, TIMETZ\$1TEST, tiene una columna TIMETZ\$1VAL (tipo TIMETZ) con tres valores insertados.

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

En el siguiente ejemplo, se extraen las horas de cada timetz\$1val.

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

En el siguiente ejemplo, se extraen los milisegundos de un valor literal. Los literales no se convierten a UTC antes de que se procese la extracción. 

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

En el siguiente ejemplo, se devuelve la hora de desfase horario respecto a UTC a partir de un valor timetz literal. 

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

## Ejemplos con INTERVAL YEAR TO MONTH e INTERVAL DAY TO SECOND
<a name="r_EXTRACT_function-examples-interval"></a>

En el siguiente ejemplo, se extrae la parte del día de `1` del INTERVAL DAY TO SECOND que define 36 horas, es decir, 1 día y 12 horas.

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

En el siguiente ejemplo, se extrae la parte del mes de `3` del YEAR TO MONTH que define 15 meses, es decir, 1 año y 3 meses.

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

En el siguiente ejemplo, se extrae la parte del mes de `6` de 30 meses que es 2 años y 6 meses.

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

En el siguiente ejemplo, se extrae la parte de la hora de `2` de 50 horas que es 2 días y 2 horas.

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

En el siguiente ejemplo, se extrae la parte de minutos de `11` de 1 hora, 11 minutos y 11 123 segundos.

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

En el siguiente ejemplo, se extrae la parte de segundos de `1.11` de 1 día, 1 hora, 1 minuto y 1,11 segundos.

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

En el siguiente ejemplo, se extrae el número total de horas de un INTERVAL. Cada parte se extrae y se agrega a un total.

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

En el siguiente ejemplo, se extrae el número total de segundos de un INTERVALO. Cada parte se extrae y se agrega a un total.

```
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
```