Partes da data para funções de data ou de timestamp - Amazon Redshift

Partes da data para funções de data ou de timestamp

A tabela a seguir identifica os nomes e abreviações da parte da data e da hora que são aceitos como argumentos para as seguintes funções:

  • DATEADD

  • DATEDIFF

  • DATE_PART

  • EXTRACT

Parte da data ou parte da hora Abreviações
milênio, milênios mil, mils
século, séculos c, cent, cents
década, décadas dec, decs
epoch epoch (compatível com EXTRACT)
ano, anos y, yr, yrs
trimestre, trimestres qtr, qtrs
mês, meses mon, mons
semana, semanas

w

dia da semana

dayofweek, dow, dw, weekday (compatível com DATE_PART e Função EXTRACT)

Retorna um número inteiro de 0 a 6, começando com domingo.

nota

A parte da data DOW se comporta de maneira diferente da parte da data do dia da semana (D) usada para strings de formato de data e hora. D se baseia no números inteiros 1 a 7, onde domingo é 1. Para ter mais informações, consulte Strings de formato datetime.

dia do ano dayofyear, doy, dy, yearday (compatível com EXTRACT)
dia, dias d
hora, horas h, hr, hrs
minuto, minutos m, min, mins
segundo, segundos s, sec, secs
milissegundo, milissegundos ms, msec, msecs, msecond, mseconds, millisec, millisecs, millisecon
microssegundo, microssegundos microsec, microsecs, microsecond, usecond, useconds, us, usec, usecs
timezone, timezone_hour, timezone_minute Compatível com EXTRACT para timestamp somente com fuso horário (TIMESTAMPTZ).

Variações nos resultados com segundos, milissegundos e microssegundos

Pequenas diferenças nos resultados de consultas ocorrem quando diferentes funções de data especificam segundos, milissegundos ou microssegundos como partes da data:

  • A função EXTRACT retorna números inteiros somente para a parte da data especificada, ignorando partes de data de níveis superiores e inferiores. Se a parte da data especificada é segundos, os milissegundos e os microssegundos não são incluídos no resultados. Se a parte da data especificada é milissegundos, segundos e microssegundos não são incluídos. Se a parte da data especificada é microssegundos, segundos e milissegundos não são incluídos.

  • A função DATE_PART retorna a parte completa de segundos do timestamp, independente da parte de data especificada, retornando um valor decimal ou um número inteiro conforme necessário.

Por exemplo, compare os resultados das consultas a seguir:

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

Observações de CENTURY, EPOCH, DECADE e MIL

CENTURY ou CENTURIES

O Amazon Redshift interpreta um CENTURY para começar com o ano ###1 e terminar com o ano ###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

A implementação do Amazon Redshift de EPOCH é relativa a 1970-01-01 00:00:00.000000 independente do fuso horário onde o cluster reside. Você pode precisar deslocar os resultados pela diferença em horas dependendo do fuso horário onde o cluster está localizado.

O exemplo a seguir faz o seguinte:

  1. Cria uma tabela chamada EVENT_EXAMPLE com base na tabela EVENT. Este comando CREATE AS usa a função DATE_PART para criar uma coluna de data (chamada PGDATE_PART por padrão) para armazenar o valor de epoch para cada evento.

  2. Seleciona a coluna e o tipo de dados de EVENT_EXAMPLE a partir de PG_TABLE_DEF.

  3. Seleciona EVENTNAME, STARTTIME e PGDATE_PART a partir da tabela EVENT_EXAMPLE para visualizar os diferentes formatos de data e hora.

  4. Seleciona EVENTNAME e STARTTIME a partir da tabela EVENT EXAMPLE na forma atual. Converte valores de epoch em PGDATE_PART usando um intervalo de 1 segundo para um timestamp sem fuso horário e retorna os resultados em uma coluna chamada 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 ou DECADES

O Amazon Redshift interpreta DECADE or DECADES DATEPART com base no calendário comum. Por exemplo, como o calendário comum começa a partir do ano 1, a primeira década (década 1) é 0001-01-01 a 0009-12-31 e a segunda década (década 2) é 0010-01-01 a 0019-12-31. Por exemplo, a década 201 vai de 2000-01-01 a 2009-12-31:

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 ou MILS

O Amazon Redshift interpreta que um MIL começa no primeiro dia do ano #001 e termina no último dia do ano #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