Función EXTRACT - Amazon Redshift

Función EXTRACT

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

EXTRACT(datepart FROM source)

Argumentos

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.

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

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

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.

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

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

La siguiente tabla de ejemplo, TIME_TEST, tiene una columna TIME_VAL (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_val.

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_val.

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

La siguiente tabla de ejemplo, TIMETZ_TEST, tiene una columna TIMETZ_VAL (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_val.

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

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