SnowConvert AI - RedShift - Funções internas¶
Nota
Para mais informações sobre funções internas e seus equivalentes no Snowflake, consulte também [Funções internas comuns](../general/ built-in-functions.md).
Funções de agregação¶
Funções de agregação calculam um único valor de resultado a partir de um conjunto de valores de entrada. (Funções agregadas da referência da linguagem RedShift SQL).
Redshift |
Snowflake |
|---|---|
ANY_VALUE ( [ DISTINCT |
ALL ]) |
AVG ( [ DISTINCT | ALL ] expression ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/avg»>AVG</a> (expressão [ DISTINCT ])</p><p></p><p><em>Observações: RedShift e Snowflake podem mostrar precisão/decimais diferentes devido a arredondamento/formatação do tipo de dados.</em></p> |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/listagg»>LISTAGG</a> </p><p></p><p><em>Observações: O DISTINCT do RedShift ignora espaços finais (“a “ = “a”); o do Snowflake não. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/median»>MEDIAN</a> </p><p></p><p><em>Observações<strong>: O Snowflake não permite o uso de tipos de data</strong>, o RedShift permite. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.aws.amazon.com/redshift/latest/dg/r_STDDEV_functions.html»>STDDEV/STDDEV_SAMP</a> (expressão [ DISTINCT |
ALL ] ) STDDEV_POP ( [ DISTINCT |
<p><a href=»https://docs.aws.amazon.com/redshift/latest/dg/r_VARIANCE_functions.html»>VARIANCE/VAR_SAMP</a> (expressão [ DISTINCT |
ALL ] ) VAR_POP ( [ DISTINCT |
Funções de matriz¶
Cria uma matriz do tipo de dados SUPER. (Funções de matriz de referência da linguagem RedShift SQL).
Redshift |
Snowflake |
|---|---|
ARRAY ( [ expr1 ] [ , expr2 [ , … ] ] ) |
( [ <expr1> ] [ , <expr2> [ , … ] ] ) |
ARRAY_CONCAT ( super_expr1, super_expr2 ) |
ARRAY_CAT ( <array1> , <array2> ) |
( super_expr1,super_expr2,.. ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/array_flatten»>ARRAY_FLATTEN</a> ( <array> ) </p><p></p><p><em>Observações: os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
GET_ARRAY_LENGTH ( super_expr ) |
ARRAY_SIZE ( <array> | <variant>) |
SPLIT_TO_ARRAY ( string,delimiter ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/split»>SPLIT</a> (<string>, <separator>)</p><p></p><p><em>Notes: O RedShift permite delimitadores ausentes; o Snowflake os exige, assumindo a vírgula como padrão</em></p> |
SUBARRAY ( super_expr, start_position, length ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/array_slice»>ARRAY_SLICE</a> ( <array> , <from> , <to> )</p><p></p><p><em>Observações: Os nomes das funções e o segundo argumento são diferentes; ajuste os argumentos para a equivalência.</em></p> |
Expressões condicionais¶
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/decode»>DECODE</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
COALESCE ( expression, expression, … ) |
COALESCE ( expression, expression, … ) |
GREATEST ( value [, …] ) |
GREATEST_IGNORE_NULLS ( <expr1> [, <expr2> … ] ) |
LEAST ( value [, …] ) |
LEAST_IGNORE_NULLS ( <expr1> [, <expr2> … ]) |
NVL( expression, expression, … ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/nvl»><em>NVL</em></a> <em>( expressão, expressão )</em></p><p></p><p><em>Observação: O NVL do RedShift aceita vários argumentos; o NVL do Snowflake aceita apenas dois. Para corresponder ao comportamento do RedShift, o NVL com mais de dois argumentos é convertido em COALESCE.</em></p> |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/nullif»>NULLIF</a> </p><p></p><p><em>Observações: O NULLIF do RedShift ignora espaços finais em algumas comparações de cadeias de caracteres, ao contrário do Snowflake. Portanto, a transformação adiciona RTRIM para equivalência.</em></p> |
Funções de formatação de tipo de dados¶
As funções de formatação de tipo de dados fornecem uma maneira fácil de converter valores de um tipo de dados em outro. Para cada uma dessas funções, o primeiro argumento é sempre o valor a ser formatado e o segundo argumento contém o modelo do novo formato. (Funções de formatação de tipo de dados da referência da linguagem RedShift SQL).
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/to_char»>TO_CHAR</a> </p><p></p><p><em>Observações: A compatibilidade do Snowflake com esta função é parcial (consulte</em> <a href=»../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0006»><em>SSC-EWI-0006</em></a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/to_date»>TO_DATE</a> </p><p></p><p><em>Observações: O <code>TO_DATE</code> do Snowflake falha em datas inválidas como “20010631” (junho tem 30 dias), ao contrário do flexível <code>TO_DATE</code> do RedShift. Use <code>TRY_TO_DATE</code> no Snowflake para tratar esses casos, retornando NULL. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/redshift/ssc-fdm-rs0004.md»><em>SSC-FDM-RS0004</em></a><em>,</em> <a href=»../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0006»><em>SSC-EWI-0006</em></a><em>,</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/general/ssc-fdm-0032.md»><em>SSC-FDM-0032</em></a><em>).</em></p> |
Funções de data e hora¶
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/add_months»>ADD_MONTHS</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/convert_timezone»>CONVERT_TIMEZONE</a> ( <source_tz> , <target_tz> , <source_timestamp_ntz> )</p><p><br></p><p><a href=»https://docs.snowflake.com/en/sql-reference/functions/convert_timezone»>CONVERT_TIMEZONE</a> ( <target_tz> , <source_timestamp> ) </p><p></p><p><em>Observações: O padrão do RedShift é UTC; a função do Snowflake requer a especificação explícita de UTC. Portanto, ela será adicionada como o fuso horário de destino.</em></p> |
|
DATEADD/DATE_ADD ( datepart, interval, {date | time | timetz | timestamp} ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/dateadd»>DATE_ADD</a> ( <date_or_time_part>, <value>, <date_or_time_expr> )</p><p></p><p><em>Observações: Os formatos das partes de data inválidas são traduzidos para formatos compatíveis com o Snowflake.</em></p> |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/datediff»>DATEDIFF</a> </p><p></p><p><em>Observações: Os formatos das partes de data inválidas são traduzidos para formatos compatíveis com o Snowflake.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/date_part»>DATE_PART</a> </p><p></p><p><em>Observações: esta função é parcialmente compatível com o Snowflake. (Consulte</em> <a href=»../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0006»><em>SSC-EWI-OOO6</em></a><em>).</em></p> |
|
DATE_PART_YEAR (date) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/year»>YEAR</a> ( <date_or_timestamp_expr> ) </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte </em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/date_trunc»>DATE_TRUNC</a> </p><p></p><p><em>Observações: Os formatos das partes de data inválidas são traduzidos para formatos compatíveis com o Snowflake.</em> </p> |
|
GETDATE() |
GETDATE() |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/last_day»>LAST_DAY</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/next_day»>NEXT_DAY</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
SYSDATE() |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/extract»>EXTRACT</a><br><br><em>Observações:</em> compatibilidade com tempo parcial ou data/hora: DAY, DOW, DOY, EPOCH, HOUR, MINUTE, MONTH, QUARTER, SECOND, WEEK, YEAR. </p> |
Nota
O padrão dos carimbos de data/hora do RedShift é a precisão de microssegundos (6 dígitos); o Snowflake usa como padrão a precisão de nanossegundos (9 dígitos). Ajuste a precisão conforme necessário usando ALTER SESSION (por exemplo, ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF2‘;). Pode ocorrer perda de precisão dependendo do tipo de dados utilizado.\ \ Como alguns formatos são incompatíveis com o Snowflake, ajustar os parâmetros da conta DATE_INPUT_FORMAT ou TIME_INPUT_FORMAT pode manter a equivalência funcional entre plataformas.
Funções de hash¶
Uma função hash é uma função matemática que converte um valor de entrada numérica em outro valor. (Funções hash da referência da linguagem RedShift SQL).
Redshift |
Snowflake |
|---|---|
FNV_HASH (value [, seed]) |
HASH ( <expr> [ , <expr> … ] |
Funções JSON¶
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/json_extract_path_text»>JSON_EXTRACT_PATH_TEXT</a> </p><p></p><p><em>Observações:</em> </p><ol><li><em>O RedShift trata os caracteres de nova linha, tabulação e retorno de carro literalmente; o Snowflake os interpreta.</em></li><li><em>Um literal JSON e o caminho separado por ponto são necessários para acessar os objetos aninhados na função do Snowflake.</em></li><li><em>Caminhos com espaços em variáveis devem ser colocados entre aspas.</em></li></ol> |
Funções matemáticas¶
Redshift |
Snowflake |
|---|---|
DLOG10 (number) |
LOG (10, number) |
Nota
Os resultados do RedShift e do Snowflake podem diferir em escala.
Funções de cadeia de caracteres¶
As funções de cadeia de caracteres processam e manipulam cadeias de caracteres ou expressões que são avaliadas como cadeias de caracteres. (Funções de cadeia de caracteres da referência da linguagem RedShift SQL).
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/left»>LEFT</a>/<a href=»https://docs.snowflake.com/en/sql-reference/functions/right»>RIGHT</a> </p><p></p><p><em>Observações: Para comprimentos negativos em <code>LEFT</code>/<code>RIGHT</code>, o Snowflake retorna uma cadeia de caracteres vazia; o RedShift gera um erro.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/octet_length»>OCTET_LENGTH</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
QUOTE_IDENT (string) |
CONCAT (“»”, string, “»”) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/regexp_replace»>REGEXP_REPLACE</a> </p><p></p><p><em>Observações: Esta função inclui um argumento <code>parameters</code> que permite ao usuário interpretar o padrão usando o dialeto de expressão regular compatível com Perl (PCRE), representado pelo valor <code>p</code>. Isto é removido para evitar qualquer problema</em>. <em>(Consulte</em> <a href=»../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0009»><em>SSC-EWI-0009</em></a><em>,</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/general/ssc-fdm-0032.md»><em>SC-FDM-0032</em></a><em>,</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0011.md»><em>SSC-FDM- PG0011</em></a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/soundex»>SOUNDEX</a> </p><p></p><p><em>Observações: Certos caracteres especiais, os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/split_part»>SPLIT_PART</a> </p><p></p><p><em>Observações: O Snowflake e o RedShift tratam SPLIT_PART de forma diferente com agrupamentos que não diferenciam maiúsculas de minúsculas.</em></p> |
|
STRPOS (string, substring ) |
POSITION ( <expr1> IN <expr> ) |
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/substr»><em>SUBSTRING</em></a> </p><p></p><p><em>Observações:</em> o Snowflake é parcialmente compatível com esta função. O <code>SUBSTRING</code> do RedShift, com um <code>start_position</code> não positivo, calcula <code>start_position + number_characters</code> (retornando « se o resultado for não positivo). O comportamento do Snowflake é diferente. (Consulte <a href=»../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/redshift/ssc-ewi-rs0006.md»>SSC-EWI-RS0006</a>).</p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/trim»><em>TRIM</em></a> </p><p></p><p><em>Observações: o RedShift usa palavras-chave (BOTH, LEADING, TRAILING) para corte; o Snowflake usa TRIM, LTRIM, RTRIM.</em></p> |
|
Funções de informação de tipo SUPER¶
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/is_array»>IS_ARRAY</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/is_boolean»>IS_BOOLEAN</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
Funções de janela¶
Redshift |
Snowflake |
|---|---|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/avg»><em>AVG</em></a> </p><p></p><p><em>Observações: o arredondamento/formatação do AVG pode variar de acordo com o tipo de dados entre o RedShift e o Snowflake.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/dense_rank»>DENSE_RANK</a> </p><p></p><p><em>Observações: ORDER BY é obrigatório no Snowflake; as cláusulas ausentes são substituídas por <code>ORDER BY 1</code>.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/first_value»>FIRST_VALUE</a> </p><p></p><p><em>Observações: O Snowflake precisa de ORDER BY; as cláusulas ausentes obtêm <code>ORDER BY <expr>.</code></em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/last_value»>LAST_VALUE</a> </p><p></p><p><em>Observações: O Snowflake precisa de ORDER BY; as cláusulas ausentes obtêm <code>ORDER BY <expr></code>.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/lead»>LEAD</a> </p><p></p><p><em>Observações: O RedShift permite offsets constantes ou de expressão; o Snowflake permite apenas offsets constante</em>s.</p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/listagg»>LISTAGG</a> </p><p></p><p><em>Observações: O DISTINCT do RedShift ignora espaços finais (“a “ = “a”); o do Snowflake não. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/median»>MEDIAN</a> </p><p></p><p><em>Observações<strong>: O Snowflake não permite o uso de tipos de data</strong>, o RedShift permite. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/nth_value»>NTH_VALUE</a> </p><p></p><p><em>Observações: ORDER BY é obrigatório no Snowflake; as cláusulas ausentes são substituídas por <code>ORDER BY 1</code>.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/ntile»>NTILE</a> </p><p></p><p><em>Observações: ORDER BY é obrigatório no Snowflake; as cláusulas ausentes são substituídas por <code>ORDER BY 1</code>. (Consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/percent_rank»>PERCENT_RANK</a> </p><p></p><p><em>Observações: ORDER BY é obrigatório no Snowflake; as cláusulas ausentes são substituídas por <code>ORDER BY 1</code>.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/percentile_cont»>PERCENTILE_CONT</a> </p><p></p><p><em>Observações: O arredondamento varia entre plataformas.</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/ratio_to_report»>RATIO_TO_REPORT</a> </p><p></p><p><em>Observações:</em> <em>os resultados podem variar entre plataformas (consulte</em> <a href=»../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md»>SSC-FDM-PG0013</a><em>).</em></p> |
|
<p><a href=»https://docs.snowflake.com/en/sql-reference/functions/row_number»>ROW_NUMBER</a> </p><p></p><p>O<em>bservações: ORDER BY é obrigatório no Snowflake; as cláusulas ausentes são substituídas por <code>ORDER BY 1</code>.</em></p> |
|
STDDEV |
|
VARIANCE |
Problemas conhecidos ¶
Para obter mais informações sobre identificadores entre aspas em funções, clique aqui.
IDENTITY¶
Descrição ¶
A função IDENTITY é uma função do sistema que opera em uma coluna específica de uma tabela para determinar o valor inicial da identidade. Se o valor inicial não estiver disponível, o padrão será o valor fornecido na função. Isso será convertido em uma Sequência no Snowflake.
Sintaxe da gramática ¶
"identity"(oid_id, oid_table_id, default)
Nota
Essa função não é mais compatível com o Redshift. Ela usa o valor padrão para definir a identidade e se comporta como uma coluna de identidade padrão.
Amostra de padrões da origem¶
Código de entrada:¶
Redshift¶
CREATE TABLE IF NOT EXISTS table_test
(
id integer,
inventory_combo BIGINT DEFAULT "identity"(850178, 0, '5,3'::text)
);
INSERT INTO table_test (id) VALUES
(1),
(2),
(3),
(4);
SELECT * FROM table_test;
Resultados¶
id |
inventory_combo |
|---|---|
1 |
5 |
2 |
8 |
3 |
11 |
3 |
14 |
Código de saída:
Snowflake¶
CREATE TABLE IF NOT EXISTS table_test
(
id integer,
inventory_combo BIGINT IDENTITY(5,3) ORDER
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "11/13/2024", "domain": "test" }}';
INSERT INTO table_test (id) VALUES
(1),
(2),
(3),
(4);
SELECT * FROM
table_test;
Resultados¶
id |
inventory_combo |
|---|---|
1 |
5 |
2 |
8 |
3 |
11 |
3 |
14 |
EWIs relacionados¶
Não há problemas conhecidos.
TO_CHAR¶
Função de data
Descrição¶
TO_CHAR converte um carimbo de data/hora ou uma expressão numérica em um formato de dados de cadeia de caracteres. (Função TO_CHAR de referência da linguagem Redshift SQL)
Aviso
Essa função é parcialmente suportada no Snowflake.
Para obter mais informações sobre identificadores entre aspas em funções, clique aqui.
Sintaxe da gramática¶
TO_CHAR(timestamp_expression | numeric_expression , 'format')
Amostra de padrões da origem¶
Código de entrada:¶
Redshift¶
SELECT TO_CHAR(timestamp '2009-12-31 23:15:59', 'YYYY'),
TO_CHAR(timestamp '2009-12-31 23:15:59', 'YYY'),
TO_CHAR(timestamp '2009-12-31 23:15:59', 'TH'),
"to_char"(timestamp '2009-12-31 23:15:59', 'MON-DY-DD-YYYY HH12:MIPM'),
TO_CHAR(125.8, '999.99'),
"to_char"(125.8, '999.99');
Resultados¶
TO_CHAR |
TO_CHAR |
TO_CHAR |
TO_CHAR |
TO_CHAR |
|---|---|---|---|---|
2009 |
009 |
DEC-THU-31-2009 11:15PM |
125,80 |
125,80 |
Código de saída:¶
Snowflake¶
SELECT
TO_CHAR(timestamp '2009-12-31 23:15:59', 'YYYY'),
PUBLIC.YEAR_PART_UDF(timestamp '2009-12-31 23:15:59', 3),
TO_CHAR(timestamp '2009-12-31 23:15:59', 'TH') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - TH FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!,
PUBLIC.MONTH_SHORT_UDF(timestamp '2009-12-31 23:15:59', 'uppercase') || '-' || PUBLIC.DAYNAME_SHORT_UDF(timestamp '2009-12-31 23:15:59', 'uppercase') || TO_CHAR(timestamp '2009-12-31 23:15:59', '-DD-YYYY HH12:MI') || PUBLIC.MERIDIAN_INDICATORS_UDF(timestamp '2009-12-31 23:15:59', 'uppercase'),
TO_CHAR(125.8, '999.99'),
TO_CHAR(125.8, '999.99');
Resultados¶
TO_CHAR |
TO_CHAR |
|---|---|
2009 |
Dec-Thu-31-2009 11:15PM |
Problemas conhecidos ¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0006: O formato de data/numérico atual pode ter um comportamento diferente no Snowflake.
Para valores de data e hora¶
Especificação de tradução para a função TO_CHAR ao transformar valores de data ou carimbo de data/hora em cadeia de caracteres
Descrição¶
As cadeias de formato a seguir se aplicam a funções como TO_CHAR. Essas cadeias de caracteres podem conter separadores de data e hora (como “
-”, “/ou “:”) e os seguintes «dateparts» e «timeparts». (Página de referência das cadeias de caracteres de formato Datetime do Redshift)
Sintaxe da gramática¶
TO_CHAR (timestamp_expression, 'format')
A tabela a seguir especifica o mapeamento de cada elemento de formato para o Snowflake:
Redshift |
Snowflake |
|---|---|
|
|
|
|
|
|
|
Com suporte direto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p><code>PUBLIC.DAY_OF_WEEK_UDF</code> </p><p></p><p><em>Observações: para esta UDF funcionar corretamente, o parâmetro de sessão do Snowflake <code>WEEK_START</code> deve ter seu valor padrão (<code>0</code>).</em></p> |
|
|
|
|
|
Com suporte direto |
|
|
|
Com suporte direto |
|
Com suporte direto |
|
Com suporte direto |
|
|
|
|
|
|
|
|
|
<p><code>UTC</code> e <code>utc</code> </p><p></p><p><em>Observações: de acordo com a</em> <a href=»https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz»><em>documentação do RedShift</em></a><em>, todos os carimbos de data/hora com fuso horário são armazenados em UTC, o que faz com que esse elemento de formato retorne um resultado fixo.</em></p> |
|
<p>+00 </p><p></p><p><em>Observações: de acordo com a</em> <a href=»https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz»><em>documentação do RedShift</em></a><em>, todos os carimbos de data/hora com fuso horário são armazenados em UTC, o que faz com que esse elemento de formato retorne um resultado fixo.</em></p> |
|
|
|
Observações: este é um modificador de padrão de modelo PostgreSQL para «modo ortográfico»; no entanto, como ele não faz nada no RedShift, é removido da saída. |
|
Observações: este é outro modificador de padrão de modelo para «formato fixo»; porém, por não ser usado na função TO_CHAR, ele é removido. |
Amostra de padrões da origem¶
Transformação direta de elementos de formato (sem funções/UDFs)¶
O resultado é preservado como uma única função TO_CHAR
Redshift¶
Consulta¶
SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH:MI:SS.MS') AS col1;
Resultado¶
+----------------------+
|col1 |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+
Snowflake¶
Consulta¶
SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH12:MI:SS.FF3') AS col1;
Resultado¶
+----------------------+
|col1 |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+
Transformação de formato usando funções/UDFs¶
O resultado é uma concatenação de várias funções internas TO_CHAR, UDFs e Snowflake que geram a representação de cadeia de caracteres equivalente do valor datetime
Redshift¶
Consulta¶
SELECT TO_CHAR(DATE '2025-07-05', '"Today is " Month DAY DD, "it belongs to the week " IW') AS result;
Resultado¶
+-------------------------------------------------------------+
|result |
+-------------------------------------------------------------+
|Today is July SATURDAY 05, it belongs to the week 27 |
+-------------------------------------------------------------+
Snowflake¶
Consulta¶
SELECT
'Today is ' ||
TO_CHAR(DATE '2025-07-05', ' ') ||
PUBLIC.FULL_MONTH_NAME_UDF(DATE '2025-07-05', 'firstOnly') ||
' ' ||
PUBLIC.DAYNAME_LONG_UDF(DATE '2025-07-05', 'uppercase') ||
TO_CHAR(DATE '2025-07-05', ' DD, ') ||
'it belongs to the week ' ||
TO_CHAR(DATE '2025-07-05', ' ') ||
WEEKISO(DATE '2025-07-05') AS result;
Resultado¶
+-------------------------------------------------------------+
|result |
+-------------------------------------------------------------+
|Today is July SATURDAY 05, it belongs to the week 27 |
+-------------------------------------------------------------+
Texto citado¶
Os elementos de formato no texto entre aspas duplas são adicionados à saída diretamente sem interpretá-los; as aspas duplas com escape são transformadas em seu equivalente com escape no Snowflake.
Redshift¶
Consulta¶
SELECT
TO_CHAR(DATE '2025-01-16', 'MM "TESTING DD" DD') AS result1,
TO_CHAR(DATE '2025-01-16', 'MM TESTING \\"DD\\" DD') AS result2,
TO_CHAR(DATE '2025-01-16', 'MM "TESTING \\"DD\\"" DD') AS result3;
Resultado¶
+-----------------+-------------------+-------------------+
|result1 |result2 |result3 |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+
Snowflake¶
Consulta¶
SELECT
TO_CHAR(DATE '2025-01-16', 'MM ') || 'TESTING DD' || TO_CHAR(DATE '2025-01-16', ' DD') AS result1,
TO_CHAR(DATE '2025-01-16', 'MM TEST') || PUBLIC.ISO_YEAR_PART_UDF(DATE '2025-01-16', 1) || TO_CHAR(DATE '2025-01-16', 'NG ""DD"" DD') AS result2,
TO_CHAR(DATE '2025-01-16', 'MM ') || 'TESTING "DD"' || TO_CHAR(DATE '2025-01-16', ' DD') AS result3;
Resultado¶
+-----------------+-------------------+-------------------+
|result1 |result2 |result3 |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+
Problemas conhecidos¶
Modificadores de padrão de modelo não suportados¶
Os seguintes modificadores de modelo de formato:
FM (modo de preenchimento)
TH e th (sufixo de número ordinal em maiúsculas e minúsculas)
TM (modo de conversão)
Não são compatíveis, inclui-los em um formato vai gerar SSC-EWI-0006
Código de entrada:
SELECT TO_CHAR(CURRENT_DATE, 'FMMonth'),
TO_CHAR(CURRENT_DATE, 'DDTH'),
TO_CHAR(CURRENT_DATE, 'DDth'),
TO_CHAR(CURRENT_DATE, 'TMMonth');
Código de saída:
SELECT
TO_CHAR(CURRENT_DATE(), 'FM') || PUBLIC.FULL_MONTH_NAME_UDF(CURRENT_DATE(), 'firstOnly') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - FMMonth FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!,
TO_CHAR(CURRENT_DATE(), 'DDTH') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - DDTH FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!,
TO_CHAR(CURRENT_DATE(), 'DDth') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - DDth FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!,
TO_CHAR(CURRENT_DATE(), 'TM') || PUBLIC.FULL_MONTH_NAME_UDF(CURRENT_DATE(), 'firstOnly') !!!RESOLVE EWI!!! /*** SSC-EWI-0006 - TMMonth FORMAT MAY FAIL OR MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/!!!;
Parâmetro de formato passado pela variável
Quando o parâmetro de formato é passado como uma variável em vez de um literal de cadeia de caracteres, a transformação de elementos de formato não pode ser aplicada; um FDM será adicionado aos usos da função alertando sobre isso.
Código de entrada:
SELECT TO_CHAR(d, 'YYYY/MM/DD'),
TO_CHAR(d, f)
FROM (SELECT TO_DATE('2001-01-01','YYYY-MM-DD') as d, 'DD/MM/YYYY' as f);
Código de saída:
SELECT TO_CHAR(d, 'YYYY/MM/DD'),
--** SSC-FDM-0032 - PARAMETER 'format_string' IS NOT A LITERAL VALUE, TRANSFORMATION COULD NOT BE FULLY APPLIED **
TO_CHAR(d, f)
FROM (SELECT TO_DATE('2001-01-01','YYYY-MM-DD') as d, 'DD/MM/YYYY' as f);
EWIs relacionados¶
SSC-EWI-0006: O formato de data/numérico atual pode ter um comportamento diferente no Snowflake.
SSC-FDM-0032: O parâmetro não é um valor literal, a transformação não pôde ser totalmente aplicada