SnowConvert AI - Redshift - Fonctions intégrées

Note

Pour plus d’informations sur les fonctions intégrées et leurs équivalents Snowflake, consultez également les fonctions intégrées courantes.

Fonctions d’agrégation

Les fonctions d’agrégation calculent une seule valeur de résultat à partir d’un ensemble de valeurs d’entrée. (Fonctions d’agrégation de référence de langage Redshift SQL).

Redshift

Snowflake

ANY_VALUE ( [ DISTINCT

ALL ] expression )

AVG ( [ DISTINCT | ALL ] expression )

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/avg »>AVG</a> (expression [ DISTINCT ] )</p><p></p><p><em>Remarques : Redshift et Snowflake peuvent afficher des précisions/décimales différentes en raison de l’arrondi/du formatage des types de données.</em></p>

COUNT

COUNT

LISTAGG

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/listagg »>LISTAGG</a> </p><p></p><p><em>Remarques : DISTINCT de Redshift ignore les espaces de fin (“a “ = “a”) ; Pas Snowflake. (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

MAX

MAX

MEDIAN

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/median »>MEDIAN</a> </p><p></p><p><em>Remarques<strong> : Snowflake n’autorise pas l’utilisation de types de date</strong>, alors que Redshift oui. (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

MIN

MIN

PERCENTILE_CONT

PERCENTILE_CONT

<p><a href= »https://docs.aws.amazon.com/redshift/latest/dg/r_STDDEV_functions.html »>STDDEV/STDDEV_SAMP</a> (expression [ DISTINCT

ALL ] )

STDDEV_POP ( [ DISTINCT

SUM

SUM

<p><a href= »https://docs.aws.amazon.com/redshift/latest/dg/r_VARIANCE_functions.html »>VARIANCE/VAR_SAMP</a> (expression [ DISTINCT

ALL ] )

VAR_POP ( [ DISTINCT

Fonctions de tableau

Crée un tableau de type de données SUPER. (Fonctions de tableau de référence du langage Redshift SQL).

Redshift

Snowflake

ARRAY ( [ expr1 ] [ , expr2 [ , … ] ] )

ARRAY_CONSTRUCT

( [ <expr1> ] [ , <expr2> [ , … ] ] )

ARRAY_CONCAT ( super_expr1, super_expr2 )

ARRAY_CAT ( <array1> , <array2> )

<p><a href= »https://docs.aws.amazon.com/redshift/latest/dg/array_flatten.html »>ARRAY_FLATTEN</a></p><p> ( <em>expr_super1</em>,<em>expr_super2</em>,.. )</p>

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/array_flatten »>ARRAY_FLATTEN</a> ( &#x3C;array> ) </p><p></p><p><em>Remarques : les résultats peuvent varier entre les plateformes (Voir</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> (&#x3C;string>, &#x3C;separator>)</p><p></p><p><em>Remarques : Redshift autorise les délimiteurs manquants ; Snowflake les exige, la valeur par défaut étant la virgule</em></p>

SUBARRAY ( super_expr, start_position, length )

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/array_slice »>ARRAY_SLICE</a> ( &#x3C;array> , &#x3C;from> , &#x3C;to> )</p><p></p><p><em>Remarques : Les noms de la fonction et le deuxième argument diffèrent ; ajustez les arguments pour qu’ils soient comparables.</em></p>

Expressions conditionnelles

Redshift

Snowflake

DECODE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/decode »>DECODE</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</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>( expression, expression )</em></p><p></p><p><em>Remarques : NVL de Redshift accepte plusieurs arguments ; NVL de Snowflake n’en accepte que deux. Pour faire correspondre le comportement Redshift, NVL avec plus de deux arguments est converti en COALESCE.</em></p>

NVL2

NVL2

NULLIF

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/nullif »>NULLIF</a> </p><p></p><p><em>Remarques : NULLIF de Redshift ignore les espaces de fin dans certaines comparaisons de chaînes, contrairement à Snowflake. Par conséquent, la transformation ajoute RTRIM pour l’équivalence.</em></p>

Fonctions de formatage de types de données

Les fonctions de formatage de type de données offrent un moyen simple de convertir des valeurs d’un type de données à un autre. Pour chacune de ces fonctions, le premier argument est toujours la valeur à formater et le deuxième argument contient le modèle pour le nouveau format. (Fonctions de formatage de type de données de référence de langage Redshift SQL).

Redshift

Snowflake

TO_CHAR

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/to_char »>TO_CHAR</a> </p><p></p><p><em>Remarques : La prise en charge de cette fonction par Snowflake est partielle (voir</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>

TO_DATE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/to_date »>TO_DATE</a> </p><p></p><p><em>Remarques : <code>TO_DATE</code> de Snowflake échoue pour des dates non valides comme “20010631” (juin compte 30 jours), contrairement au <code>TO_DATE</code> flexible de Redshift. Utilisez <code>TRY_TO_DATE</code> dans Snowflake pour traiter ces cas en renvoyant NULL. (voir</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>

Fonctions de date et d’heure

Redshift

Snowflake

ADD_MONTHS

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/add_months »>ADD_MONTHS</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

AT TIME ZONE “timezone”

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/convert_timezone »>CONVERT_TIMEZONE</a> ( &#x3C;source_tz> , &#x3C;target_tz> , &#x3C;source_timestamp_ntz> )</p><p><br></p><p><a href= »https://docs.snowflake.com/en/sql-reference/functions/convert_timezone »>CONVERT_TIMEZONE</a> ( &#x3C;target_tz> , &#x3C;source_timestamp> ) </p><p></p><p><em>Remarques : Redshift utilise UTC par défaut ; la fonction Snowflake requiert une spécification UTC explicite. Par conséquent, il sera ajouté comme fuseau horaire cible.</em></p>

CONVERT_TIMEZONE

CONVERT_TIMEZONE

CURRENT_DATE

CURRENT_DATE()

DATE

DATE

DATEADD/DATE_ADD ( datepart, interval, {date | time | timetz | timestamp} )

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/dateadd »>DATE_ADD</a> ( &#x3C;date_or_time_part>, &#x3C;value>, &#x3C;date_or_time_expr> )</p><p></p><p><em>Remarques : Les formats de parties de date non valides sont traduits en formats compatibles avec Snowflake.</em></p>

DATEDIFF/DATE_DIFF

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/datediff »>DATEDIFF</a> </p><p></p><p><em>Remarques : Les formats de parties de date non valides sont traduits en formats compatibles avec Snowflake.</em></p>

DATE_PART/PGDATE_PART

DATE_PART

Notes: this function is partially supported by Snowflake. (See SSC-EWI-0006).

DATE_PART_YEAR (date)

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/year »>YEAR</a> ( &#x3C;date_or_timestamp_expr> ) </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier entre les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

DATE_TRUNC

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/date_trunc »>DATE_TRUNC</a> </p><p></p><p><em>Remarques : Les formats de parties de date non valides sont traduits en formats compatibles avec Snowflake.</em> </p>

GETDATE()

GETDATE()

LAST_DAY

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/last_day »>LAST_DAY</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

NEXT_DAY

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/next_day »>NEXT_DAY</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

SYSDATE

SYSDATE()

TIMESTAMP

TO_TIMESTAMP

TRUNC

TRUNC

EXTRACT

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/extract »>EXTRACT</a><br><br><em>Remarques :</em> Partie de temps ou date prise en charge : DAY, DOW, DOY, EPOCH, HOUR, MINUTE, MONTH, QUARTER, SECOND, WEEK, YEAR. </p>

Note

Redshift timestamps default to microsecond precision (6 digits); Snowflake defaults to nanosecond precision (9 digits). Adjust precision as needed using ALTER SESSION (for example, ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF2';). Precision loss may occur depending on the data type used.

Since some formats are incompatible with Snowflake, adjusting the account parameters DATE_INPUT_FORMAT or TIME_INPUT_FORMAT might maintain functional equivalence between platforms.

Fonctions de hachage

Une fonction de hachage est une fonction mathématique qui convertit une valeur numérique d’entrée en une autre valeur. (Les fonctions de hachage de référence du langage Redshift SQL).

Redshift

Snowflake

FNV_HASH (value [, seed])

HASH ( <expr> [ , <expr> … ]

Fonctions JSON

Redshift

Snowflake

JSON_EXTRACT_PATH_TEXT

<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>Remarques :</em> </p><ol><li><em>Redshift traite les caractères de nouvelle ligne, de tabulation et de retour chariot littéralement ; Snowflake les interprète.</em></li><li><em>Un littéral JSON et un chemin séparés par des points sont nécessaires pour accéder aux objets imbriqués dans la fonction Snowflake.</em></li><li><em>Les chemins avec des espaces dans les variables doivent être entre guillemets.</em></li></ol>

Fonctions mathématiques

Note

L’échelle des résultats Redshift et Snowflake peut varier.

Fonctions de chaîne

Les fonctions de chaîne traitent et manipulent les chaînes de caractères ou les expressions qui correspondent à des chaînes de caractères. (Fonctions de chaîne de référence du langage Redshift SQL).

Redshift

Snowflake

ASCII

ASCII

BTRIM

TRIM

CHAR_LENGTH

LENGTH

CHARACTER_LENGTH

LENGTH

CHARINDEX

CHARINDEX

CHR

CHR

CONCAT

CONCAT

INITCAP

INITCAP

LEFT/RIGHT

<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>Remarques : Pour les longueurs négatives en <code>LEFT</code>/<code>RIGHT</code>, Snowflake renvoie une chaîne vide ; Redshift signale une erreur.</em></p>

LEN

LEN

LOWER

LOWER

OCTET_LENGTH

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/octet_length »>OCTET_LENGTH</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</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, “ »”)

REGEXP_REPLACE

REGEXP_REPLACE

Notes: This function includes a parameters argument that enables the user to interpret the pattern using the Perl Compatible Regular Expression (PCRE) dialect, represented by the p value, this is removed to avoid any issues. (See SSC-EWI-0009, SC-FDM-0032, SSC-FDM-PG0011).

REPEAT

REPEAT

REPLACE

REPLACE

REPLICATE

REPEAT

REVERSE

REVERSE

SOUNDEX

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/soundex »>SOUNDEX</a> </p><p></p><p><em>Remarques : Certains caractères spéciaux, les résultats peuvent varier d’une plateforme à l’autre (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

SPLIT_PART

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/split_part »>SPLIT_PART</a> </p><p></p><p><em>Remarques : Snowflake et Redshift traitent SPLIT_PART différemment avec les classements insensibles à la casse.</em></p>

STRPOS (string, substring )

POSITION ( <expr1> IN <expr> )

SUBSTRING

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/substr »><em>SUBSTRING</em></a> </p><p></p><p><em>Remarques :</em> Snowflake prend en charge partiellement cette fonction. <code>SUBSTRING</code> de Redshift, avec un <code>start_position</code> non positif, calcule <code>start_position + number_characters</code> (renvoyant “” si le résultat est non positif). Le comportement de Snowflake diffère. (Voir <a href= »../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/redshift/ssc-ewi-rs0006.md »>SSC-EWI-RS0006</a>).</p>

TEXTLEN

LENGTH

TRANSLATE

TRANSLATE

TRIM

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/trim »><em>TRIM</em></a> </p><p></p><p><em>Remarques : Redshift utilise des mots-clés (BOTH, LEADING, TRAILING) pour le rognage ; Snowflake utilise TRIM, LTRIM, RTRIM.</em></p>

UPPER

UPPER

Fonctions d’informations de type SUPER

Redshift

Snowflake

IS_ARRAY

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/is_array »>IS_ARRAY</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

IS_BOOLEAN

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/is_boolean »>IS_BOOLEAN</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

Fonctions de fenêtre

Redshift

Snowflake

AVG

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/avg »><em>AVG</em></a> </p><p></p><p><em>Remarques : L’arrondi/le formatage AVG peut varier selon le type de données entre Redshift et Snowflake.</em></p>

COUNT

COUNT

DENSE_RANK

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/dense_rank »>DENSE_RANK</a> </p><p></p><p><em>Remarques : ORDER BY est obligatoire dans Snowflake ; les clauses manquantes sont remplacées par <code>ORDER BY 1</code>.</em></p>

FIRST_VALUE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/first_value »>FIRST_VALUE</a> </p><p></p><p><em>Remarques : Snowflake a besoin de ORDER BY ; les clauses manquantes obtiennent <code>ORDER BY &#x3C;expr>.</code></em></p>

LAG

LAG

LAST_VALUE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/last_value »>LAST_VALUE</a> </p><p></p><p><em>Remarques : Snowflake a besoin de ORDER BY ; les clauses manquantes obtiennent <code>ORDER BY &#x3C;expr></code>.</em></p>

LEAD

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/lead »>LEAD</a> </p><p></p><p><em>Remarques : Redshift permet les décalages de constantes ou d’expressions ; Snowflake autorise uniquement les décalages de constante</em>.</p>

LISTAGG

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/listagg »>LISTAGG</a> </p><p></p><p><em>Remarques : DISTINCT de Redshift ignore les espaces de fin (“a “ = “a”) ; Pas Snowflake. (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

MEDIAN

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/median »>MEDIAN</a> </p><p></p><p><em>Remarques<strong> : Snowflake n’autorise pas l’utilisation de types de date</strong>, alors que Redshift oui. (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

NTH_VALUE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/nth_value »>NTH_VALUE</a> </p><p></p><p><em>Remarques : ORDER BY est obligatoire dans Snowflake ; les clauses manquantes sont remplacées par <code>ORDER BY 1</code>.</em></p>

NTILE

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/ntile »>NTILE</a> </p><p></p><p><em>Remarques : ORDER BY est obligatoire dans Snowflake ; les clauses manquantes sont remplacées par <code>ORDER BY 1</code>. (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

PERCENT_RANK

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/percent_rank »>PERCENT_RANK</a> </p><p></p><p><em>Remarques : ORDER BY est obligatoire dans Snowflake ; les clauses manquantes sont remplacées par <code>ORDER BY 1</code>.</em></p>

PERCENTILE_CONT

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/percentile_cont »>PERCENTILE_CONT</a> </p><p></p><p><em>Remarques : L’arrondi varie selon les plateformes.</em></p>

PERCENTILE_DISC

PERCENTILE_DISC

RANK

RANK

RATIO_TO_REPORT

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/ratio_to_report »>RATIO_TO_REPORT</a> </p><p></p><p><em>Remarques :</em> <em>les résultats peuvent varier selon les plateformes (Voir</em> <a href= »../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md »>SSC-FDM-PG0013</a><em>).</em></p>

ROW_NUMBER

<p><a href= »https://docs.snowflake.com/en/sql-reference/functions/row_number »>ROW_NUMBER</a> </p><p></p><p><em>Remarques : ORDER BY est obligatoire dans Snowflake ; les clauses manquantes sont remplacées par <code>ORDER BY 1</code>.</em></p>

STDDEV_SAMP

STDDEV

VAR_SAMP

VARIANCE

Problèmes connus

  1. For more information, see Quoted identifiers in functions.

IDENTITY

Description

La fonction IDENTITY est une fonction de système qui opère sur une colonne spécifiée d’une table pour déterminer la valeur initiale de l’identité. Si la valeur initiale n’est pas disponible, elle prend par défaut la valeur fournie dans la fonction. Ceci sera traduit en séquence dans Snowflake.

Grammar Syntax

 "identity"(oid_id, oid_table_id, default)

Note

Cette fonction n’est plus prise en charge dans Redshift. Elle utilise la valeur par défaut pour définir l’identité et se comporte comme une colonne d’identité standard.

Modèles d’échantillons de sources

Code d’entrée :

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;
Résultats

id

inventory_combo

1

5

2

8

3

11

3

14

Code de sortie :

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;
Résultats

id

inventory_combo

1

5

2

8

3

11

3

14

EWIs connexes

Il n’y a pas de problème connu.

TO_CHAR

Fonction de date

Description

TO\CHAR convertit un horodatage ou une expression numérique en format de données de type chaîne de caractères. (Référence linguistique Redshift SQL fonction TO_CHAR fonction)

Avertissement

Cette fonction est partiellement prise en charge par Snowflake.

For more information, see Quoted identifiers in functions.

Grammar Syntax

 TO_CHAR(timestamp_expression | numeric_expression , 'format')

Modèles d’échantillons de sources

Code d’entrée :

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');
Résultats

TO_CHAR

TO_CHAR

TO_CHAR

TO_CHAR

TO_CHAR

2009

009

DEC-THU-31-2009 11:15PM

125,80

125,80

Code de sortie :

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');
Résultats

TO_CHAR

TO_CHAR

2009

Déc-Jeu-31-2009 11 :15PM

Problèmes connus

Aucun problème n’a été constaté.

EWIs connexes

  • SSC-EWI-0006 : le format de date/numérique actuel peut avoir un comportement différent dans Snowflake.

Pour les valeurs temporelles

Spécification de traduction pour la fonction TO_CHAR lors de la transformation de valeurs de date ou d’horodatage en chaîne

Description

Les chaînes de format suivantes s’appliquent à des fonctions telles que TO_CHAR. Ces chaînes peuvent contenir des séparateurs de date (tels que “-”, “/” ou “:”) ainsi que les « dateparts » et « timeparts » suivants. (Page de référence des chaînes de format datetime de Redshift)

Grammar Syntax

TO_CHAR (timestamp_expression, 'format')

La table suivante spécifie le mappage de chaque élément de format à Snowflake :

Redshift

Snowflake

BC AD, bc, ad (indicateurs d’époque en majuscules et minuscules)

PUBLIC.ERA_INDICATORS_UDF

B.C,. A.D., b.c., a.d. (majuscules et minuscules, indicateurs d’époque avec points)

PUBLIC.ERA_INDICATORS_WITH_POINTS_UDF

CC

PUBLIC.CENTURY_UDF

YYYY et YY

Pris en charge directement

YYY et Y

PUBLIC.YEAR_PART_UDF

Y,YYY

PUBLIC.YEAR_WITH_COMMA_UDF

IYYY

YEAROFWEEKISO

I, IY, IYY

PUBLIC.ISO_YEAR_PART_UDF

Q

QUARTER

MONTH Mois, mois

PUBLIC.FULL_MONTH_NAME_UDF

MON, Moi, moi

PUBLIC.MONTH_SHORT_UDF

RM, rm

PUBLIC.ROMAN_NUMERALS_MONTH_UDF

W

PUBLIC.WEEK_OF_MONTH_UDF

WW

PUBLIC.WEEK_NUMBER_UDF

IW

WEEKISO

DAY, Jour, jour

PUBLIC.DAYNAME_LONG_UDF

DY, Jr, jr

PUBLIC.DAYNAME_SHORT_UDF

DDD

DAYOFYEAR

IDDD

PUBLIC.DAY_OF_YEAR_ISO_UDF

D

<p><code>PUBLIC.DAY_OF_WEEK_UDF</code> </p><p></p><p><em>Remarques : pour que ce UDF fonctionne correctement le paramètre de session Snowflake <code>WEEK_START</code> devrait avoir sa valeur par défaut (<code>0</code>).</em></p>

ID

DAYOFWEEKISO

J

PUBLIC.JULIAN_DAY_UDF

HH24

Pris en charge directement

HH

HH12

HH12

Pris en charge directement

MI

Pris en charge directement

SS

Pris en charge directement

MS

FF3

US

FF6

AM PM, am, pm (indicateurs méridiens en majuscules et minuscules)

PUBLIC.MERIDIAN_INDICATORS_UDF

A.M., P.M., a.m., p.m. (indicateurs méridiens majuscules et minuscules avec points)

PUBLIC.MERIDIAN_INDICATORS_WITH_POINTS_UDF

TZ et tz

<p><code>UTC</code> et <code>utc</code> </p><p></p><p><em>Remarques : conformément à la documentation Redshift </em> <a href= »https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz »><em></em></a><em>, tous les horodatages avec fuseau horaire sont stockés dans UTC, ce qui fait que cet élément de format renvoie un résultat fixe.</em></p>

OF

<p>+00 </p><p></p><p><em>Remarques : conformément à la documentation Redshift </em> <a href= »https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz »><em></em></a><em>, tous les horodatages avec fuseau horaire sont stockés dans UTC, ce qui fait que cet élément de format renvoie un résultat fixe.</em></p>

SSSS

PUBLIC.SECONDS_PAST_MIDNIGHT

SP

Remarques : il s’agit d’un exemple de modificateur de modèle PostgreSQL pour le « mode orthographe », cependant il ne fait rien sur Redshift, il est donc supprimé de la sortie.

FX

Remarques : ceci est un autre exemple de modificateur de modèle pour le « format fixe », cependant il n’a pas d’utilité sur la fonction TO_CHAR et est, par conséquent, supprimé.

Modèles d’échantillons de sources

Transformation directe des éléments de format (pas de fonctions/UDFs)

Le résultat est conservé sous la forme d’une fonction unique TO_CHAR

Redshift
Requête
 SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH:MI:SS.MS') AS col1;
Résultat
+----------------------+
|col1                  |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+

Snowflake
Requête
 SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH12:MI:SS.FF3') AS col1;
Résultat
+----------------------+
|col1                  |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+

Transformation de format à l’aide de fonctions/UDFs

Le résultat est une concaténation de plusieurs fonctions intégrées TOCHAR, UDFs et Snowflake qui génèrent la représentation équivalente sous forme de chaîne de la valeur de l’heure de la date

Redshift
Requête
 SELECT TO_CHAR(DATE '2025-07-05', '"Today is " Month DAY DD, "it belongs to the week " IW') AS result;
Résultat
+-------------------------------------------------------------+
|result                                                       |
+-------------------------------------------------------------+
|Today is  July      SATURDAY  05, it belongs to the week  27 |
+-------------------------------------------------------------+

Snowflake
Requête
 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;
Résultat
+-------------------------------------------------------------+
|result                                                       |
+-------------------------------------------------------------+
|Today is  July      SATURDAY  05, it belongs to the week  27 |
+-------------------------------------------------------------+

Texte cité

Les éléments de format dans le texte entre guillemets doubles sont ajoutés à la sortie directement sans les interpréter, les guillemets doubles échappés sont transformés en leur équivalent échappé dans Snowflake.

Redshift
Requête
 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;
Résultat
+-----------------+-------------------+-------------------+
|result1          |result2            |result3            |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+

Snowflake
Requête
 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;
Résultat
+-----------------+-------------------+-------------------+
|result1          |result2            |result3            |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+

Problèmes connus

Les modificateurs de modèles ne sont pas pris en charge

Les modificateurs de modèles de format suivants :

  • FM (mode remplissage)

  • TH et th (suffixe du nombre ordinal en majuscules et minuscules)

  • TM (mode traduction)

Ne sont pas pris en charge, les inclure dans un format générera SSC-EWI-0006

Code d’entrée :

 SELECT TO_CHAR(CURRENT_DATE, 'FMMonth'),
TO_CHAR(CURRENT_DATE, 'DDTH'),
TO_CHAR(CURRENT_DATE, 'DDth'),
TO_CHAR(CURRENT_DATE, 'TMMonth');

Code de sortie :

 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. ***/!!!;

Paramètre du format transmis par la variable

Lorsque le paramètre du format est transmis comme une variable au lieu d’un littéral de chaîne, la transformation des éléments de format ne peut pas être appliquée, un avertissement FDM sera ajouté aux utilisations de la fonction à ce sujet.

Code d’entrée :

 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);

Code de sortie :

 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 connexes

  1. SSC-EWI-0006 : le format de date/numérique actuel peut avoir un comportement différent dans Snowflake.

  2. [SSC-FDM-0032](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0032) : le paramètre n’est pas une valeur littérale, la transformation n’a pas pu être entièrement appliquée