Partes de fecha para funciones de fecha o marca temporal - Amazon Redshift

Partes de fecha para funciones de fecha o marca temporal

En la siguiente tabla, se identifican los nombres y las abreviaturas de partes de fecha y de hora que se aceptan como argumentos para las siguientes funciones:

  • DATEADD

  • DATEDIFF

  • DATE_PART

  • EXTRACT

Parte de la fecha o parte de la hora Abreviaturas
milenio, milenios mil, mils
siglo, siglos c, cent, cents
década, décadas dec, decs
tiempo Unix fecha de inicio (compatible con EXTRACT)
año, años y, yr, yrs
trimestre, trimestres qtr, qtrs
mes, meses mon, mons
semana, semanas

w

día de la semana

dayofweek, dow, dw, weekday (compatibles con DATE_PART y Función EXTRACT)

Devuelve un número entero de 0 a 6, comenzando por domingo.

nota

La parte de la fecha DOW se comporta de manera diferente a la parte de fecha (D) que se usa para las cadenas de formato de fecha y hora. D se basa en los números enteros de 1 a 7, donde domingo es 1. Para obtener más información, consulte Cadenas de formatos de fecha y hora.

día del año dayofyear, doy, dy, yearday (compatibles con EXTRACT)
día, días d
hora, horas h, hr, hrs
minuto, minutos m, min, mins
segundo, segundos s, sec, secs
milisegundo, milisegundos ms, msec, msecs, msecond, mseconds, millisec, millisecs, millisecon
microsegundo, microsegundos microsec, microsecs, microsecond, usecond, useconds, us, usec, usecs
zona horaria, timezone_hour, timezone_minute ‎Compatible solo con EXTRACT para marca temporal con zona horaria (TIMESTAMPTZ).

Variaciones en resultados con segundos, milisegundos y microsegundos

Cuando diferentes funciones de fechas especifican segundos, milisegundos o microsegundos como partes de fecha, se generan diferencias mínimas en los resultados de las consultas:

  • La función EXTRACT devuelve números enteros solo para la parte de fecha especificada e ignora partes de fecha de niveles mayores y menores. Si la parte de fecha especificada es segundos, los milisegundos y los microsegundos no se incluyen en el resultado. Si la parte de fecha especificada es milisegundos, los segundos y los microsegundos no se incluyen. Si la parte de fecha especificada es microsegundos, los segundos y los milisegundos no se incluyen.

  • La función DATE_PART devuelve la parte de segundos de la marca temporal completa, sin importar la parte de fecha especificada, por lo que devuelve un valor decimal o un número entero según se requiera.

Por ejemplo, compare los resultados de las siguientes consultas:

create table seconds(micro timestamp); insert into seconds values('2009-09-21 11:10:03.189717'); select extract(sec from micro) from seconds; date_part ----------- 3 select date_part(sec, micro) from seconds; pgdate_part ------------- 3.189717

Notas acerca de CENTURY, EPOCH, DECADE y MIL

CENTURY o CENTURIES

Amazon Redshift interpreta que CENTURY comienza en el año ###1 y termina en el año ###0:

select extract (century from timestamp '2000-12-16 12:21:13'); date_part ----------- 20 select extract (century from timestamp '2001-12-16 12:21:13'); date_part ----------- 21
EPOCH

La implementación de EPOCH en Amazon Redshift está asociada a 1970-01-01 00:00:00.000000, sin importar la zona horaria donde resida el clúster. Podría ser necesario desplazar los resultados de la diferencia en horas según la zona horaria donde se encuentre el clúster.

En el siguiente ejemplo, se muestra lo siguiente:

  1. Crea una tabla denominada EVENT_EXAMPLE basada en la tabla EVENT. Este comando CREATE AS usa la función DATE_PART para crear una columna de fecha (denominada PGDATE_PART de manera predeterminada) para almacenar el valor de fecha de inicio de cada evento.

  2. Selecciona la columna y el tipo de dato de EVENT_EXAMPLE de PG_TABLE_DEF.

  3. Selecciona EVENTNAME, STARTTIME y PGDATE_PART de la tabla EVENT_EXAMPLE para visualizar los diferentes formatos de fecha y hora.

  4. Selecciona EVENTNAME y STARTTIME de EVENT EXAMPLE como están. Convierte los valores de fecha de inicio en PGDATE_PART mediante el uso de un intervalo de 1 segundo a una marca temporal sin zona horaria y devuelve los resultados en una columna denominada CONVERTED_TIMESTAMP.

create table event_example as select eventname, starttime, date_part(epoch, starttime) from event; select "column", type from pg_table_def where tablename='event_example'; column | type ---------------+----------------------------- eventname | character varying(200) starttime | timestamp without time zone pgdate_part | double precision (3 rows)
select eventname, starttime, pgdate_part from event_example; eventname | starttime | pgdate_part ----------------------+---------------------+------------- Mamma Mia! | 2008-01-01 20:00:00 | 1199217600 Spring Awakening | 2008-01-01 15:00:00 | 1199199600 Nas | 2008-01-01 14:30:00 | 1199197800 Hannah Montana | 2008-01-01 19:30:00 | 1199215800 K.D. Lang | 2008-01-01 15:00:00 | 1199199600 Spamalot | 2008-01-02 20:00:00 | 1199304000 Macbeth | 2008-01-02 15:00:00 | 1199286000 The Cherry Orchard | 2008-01-02 14:30:00 | 1199284200 Macbeth | 2008-01-02 19:30:00 | 1199302200 Demi Lovato | 2008-01-02 19:30:00 | 1199302200 select eventname, starttime, timestamp with time zone 'epoch' + pgdate_part * interval '1 second' AS converted_timestamp from event_example; eventname | starttime | converted_timestamp ----------------------+---------------------+--------------------- Mamma Mia! | 2008-01-01 20:00:00 | 2008-01-01 20:00:00 Spring Awakening | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Nas | 2008-01-01 14:30:00 | 2008-01-01 14:30:00 Hannah Montana | 2008-01-01 19:30:00 | 2008-01-01 19:30:00 K.D. Lang | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Spamalot | 2008-01-02 20:00:00 | 2008-01-02 20:00:00 Macbeth | 2008-01-02 15:00:00 | 2008-01-02 15:00:00 The Cherry Orchard | 2008-01-02 14:30:00 | 2008-01-02 14:30:00 Macbeth | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 Demi Lovato | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 ...
DECADE o DECADES

Amazon Redshift interpreta DECADE o DECADES DATEPART en función del calendario común. Por ejemplo, debido a que el calendario común comienza a partir del año 1, la primera década (década 1) es de 0001-01-01 a 0009-12-31 y la segunda década (década 2) es de 0010-01-01 a 0019-12-31. Por ejemplo, la década 201 se extiende de 01/01/2001 a 31/12/2009:

select extract(decade from timestamp '1999-02-16 20:38:40'); date_part ----------- 200 select extract(decade from timestamp '2000-02-16 20:38:40'); date_part ----------- 201 select extract(decade from timestamp '2010-02-16 20:38:40'); date_part ----------- 202
MIL o MILS

Amazon Redshift interpreta que MIL comienza el primer día del año #001 y termina el último día del año #000:

select extract (mil from timestamp '2000-12-16 12:21:13'); date_part ----------- 2 select extract (mil from timestamp '2001-12-16 12:21:13'); date_part ----------- 3