O Amazon Redshift não permitirá mais a criação de funções definidas pelo usuário (UDFs) do Python a partir de 1.º de novembro de 2025. Se quiser usar UDFs do Python, você deve criá-las antes dessa data. As UDFs do Python existentes continuarão a funcionar normalmente. Para ter mais informações, consulte a publicação de blog
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. notaA 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 obter 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 ----------- 3select 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 ----------- 20select 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:
-
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.
-
Seleciona a coluna e o tipo de dados de EVENT_EXAMPLE a partir de PG_TABLE_DEF.
-
Seleciona EVENTNAME, STARTTIME e PGDATE_PART a partir da tabela EVENT_EXAMPLE para visualizar os diferentes formatos de data e hora.
-
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 | 1199302200select 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 ----------- 200select extract(decade from timestamp '2000-02-16 20:38:40');date_part ----------- 201select 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 ----------- 2select extract (mil from timestamp '2001-12-16 12:21:13');date_part ----------- 3