SnowConvert AI - Redshift - Built-in functions¶
注釈
For more information about built-in functions and their Snowflake equivalents, also see Common built-in functions.
集計関数¶
Aggregate functions compute a single result value from a set of input values. (Redshift SQL Language Reference Aggregate Functions).
Redshift |
Snowflake |
---|---|
ANY_VALUE ( [ DISTINCT |
ALL ] expression ) |
AVG ( [ DISTINCT | ALL ] expression ) |
AVG ( [ DISTINCT ] expression) Notes: Redshift and Snowflake may show different precision/decimals due to data type rounding/formatting. |
Notes: Redshift's DISTINCT ignores trailing spaces ('a ' = 'a'); Snowflake's does not. (See SSC-FDM-PG0013). |
|
Notes: Snowflake does not allow the use of date types, while Redshift does. (See SSC-FDM-PG0013). |
|
STDDEV/STDDEV_SAMP ( [ DISTINCT |
ALL ] expression) STDDEV_POP ( [ DISTINCT |
VARIANCE/VAR_SAMP ( [ DISTINCT |
ALL ] expression) VAR_POP ( [ DISTINCT |
Array Functions¶
Creates an array of the SUPER data type. (Redshift SQL Language Reference Array Functions).
Redshift |
Snowflake |
---|---|
ARRAY ( [ expr1 ] [ , expr2 [ , ... ] ] ) |
( [ <expr1> ] [ , <expr2> [ , ... ] ] ) |
ARRAY_CONCAT ( super_expr1, super_expr2 ) |
ARRAY_CAT ( <array1> , <array2> ) |
( super_expr1,super_expr2,.. ) |
ARRAY_FLATTEN ( <array> ) Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
GET_ARRAY_LENGTH ( super_expr ) |
ARRAY_SIZE ( <array> | <variant>) |
SPLIT_TO_ARRAY ( string,delimiter ) |
SPLIT (<string>, <separator>) Notes: Redshift allows missing delimiters; Snowflake requires them, defaulting to comma |
SUBARRAY ( super_expr, start_position, length ) |
ARRAY_SLICE ( <array> , <from> , <to> ) Notes: Function names and the second argument differ; adjust arguments for equivalence. |
Conditional expressions¶
Redshift |
Snowflake |
---|---|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
COALESCE ( expression, expression, ... ) |
COALESCE ( expression, expression, ... ) |
GREATEST ( value [, ...] ) |
GREATEST_IGNORE_NULLS ( <expr1> [, <expr2> ... ] ) |
LEAST ( value [, ...] ) |
LEAST_IGNORE_NULLS ( <expr1> [, <expr2> ... ]) |
NVL( expression, expression, ... ) |
NVL ( expression, expression ) Notes: Redshift's NVL accepts multiple arguments; Snowflake's NVL accepts only two. To match Redshift behavior, NVL with more than two arguments is converted to COALESCE. |
Notes: Redshift's NULLIF ignores trailing spaces in some string comparisons, unlike Snowflake. Therefore, the transformation adds RTRIM for equivalence. |
Data type formatting functions¶
Data type formatting functions provide an easy way to convert values from one data type to another. For each of these functions, the first argument is always the value to be formatted and the second argument contains the template for the new format. (Redshift SQL Language Reference Data type formatting functions).
Redshift |
Snowflake |
---|---|
Notes: Snowflake's support for this function is partial (see SSC-EWI-0006). |
|
Notes: Snowflake's |
Date and time functions¶
Redshift |
Snowflake |
---|---|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
CONVERT_TIMEZONE ( <source_tz> , <target_tz> , <source_timestamp_ntz> ) CONVERT_TIMEZONE ( <target_tz> , <source_timestamp> ) Notes: Redshift defaults to UTC; the Snowflake function requires explicit UTC specification. Therefore, it will be added as the target timezone. |
|
DATEADD/DATE_ADD ( datepart, interval, {date | time | timetz | timestamp} ) |
DATE_ADD ( <date_or_time_part>, <value>, <date_or_time_expr> ) Notes: Invalid date part formats are translated to Snowflake-compatible formats. |
Notes: Invalid date part formats are translated to Snowflake-compatible formats. |
|
Notes: this function is partially supported by Snowflake. (See SSC-EWI-OOO6). |
|
DATE_PART_YEAR (date) |
YEAR ( <date_or_timestamp_expr> ) Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
Notes: Invalid date part formats are translated to Snowflake-compatible formats. |
|
GETDATE() |
GETDATE() |
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
SYSDATE() |
|
EXTRACT |
注釈
Redshift timestamps default to microsecond precision (6 digits); Snowflake defaults to nanosecond precision (9 digits). Adjust precision as needed using ALTER SESSION (e.g., 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.
ハッシュ関数¶
A hash function is a mathematical function that converts a numerical input value into another value. (Redshift SQL Language Reference Hash functions).
Redshift |
Snowflake |
---|---|
FNV_HASH (value [, seed]) |
HASH ( <expr> [ , <expr> ... ] |
JSON 関数¶
Redshift |
Snowflake |
---|---|
Notes:
|
Math functions¶
Redshift |
Snowflake |
---|---|
DLOG10 (number) |
LOG (10, number) |
注釈
Redshift and Snowflake results may differ in scale.
String functions¶
String functions process and manipulate character strings or expressions that evaluate to character strings. (Redshift SQL Language Reference String functions).
Redshift |
Snowflake |
---|---|
Notes: For negative lengths in |
|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
QUOTE_IDENT (string) |
CONCAT ('"', string, '"') |
Notes: This function includes a |
|
Notes: Certain special characters, the results may vary between platforms (See SSC-FDM-PG0013). |
|
Notes: Snowflake and Redshift handle SPLIT_PART differently with case-insensitive collations. |
|
STRPOS (string, substring ) |
POSITION ( <expr1> IN <expr> ) |
Notes: Snowflake partially supports this function. Redshift's |
|
Notes: Redshift uses keywords (BOTH, LEADING, TRAILING) for trim; Snowflake uses TRIM, LTRIM, RTRIM. |
|
SUPER type information functions¶
Redshift |
Snowflake |
---|---|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
Window functions¶
Redshift |
Snowflake |
---|---|
Notes: AVG rounding/formatting can vary by data type between Redshift and Snowflake. |
|
Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
|
Notes: Snowflake needs ORDER BY; missing clauses get |
|
Notes: Snowflake needs ORDER BY; missing clauses get |
|
Notes: Redshift allows constant or expression offsets; Snowflake allows only constant offsets. |
|
Notes: Redshift's DISTINCT ignores trailing spaces ('a ' = 'a'); Snowflake's does not. (See SSC-FDM-PG0013). |
|
Notes: Snowflake does not allow the use of date types, while Redshift does. (See SSC-FDM-PG0013). |
|
Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
|
Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
|
Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
|
Notes: Rounding varies between platforms. |
|
Notes: the results may vary between platforms (See SSC-FDM-PG0013). |
|
Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
|
STDDEV |
|
VARIANCE |
既知の問題¶
For more information about quoted identifiers in functions, click here.
IDENTITY¶
説明¶
IDENTITY 関数は、アイデンティティの初期値を決定するためにテーブルの指定された列を操作するシステム関数です。初期値がない場合は、関数が提供した値がデフォルト値となります。これはSnowflakeのシーケンスに変換されます。
文法構文¶
"identity"(oid_id, oid_table_id, default)
注釈
この関数はRedshiftではサポートされなくなりました。アイデンティティを定義するためにデフォルト値を使用し、標準的なアイデンティティ列のように振る舞います。
サンプルソースパターン¶
入力コード:¶
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;
Results¶
id |
inventory_combo |
---|---|
1 |
5 |
2 |
8 |
3 |
11 |
3 |
14 |
出力コード:
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;
Results¶
id |
inventory_combo |
---|---|
1 |
5 |
2 |
8 |
3 |
11 |
3 |
14 |
関連 EWIs¶
既知の問題はありません。
TO_CHAR¶
Date function
説明¶
TO_CHAR は、タイムスタンプや数値式を文字列データ形式に変換します。(Redshift SQL 言語リファレンス TO_୧ CHAR 関数)
警告
この関数は Snowflake で部分的にサポートされています。
関数内の引用符で囲まれた識別子についての詳しい情報は、 ここをクリックしてください。
文法構文¶
TO_CHAR(timestamp_expression | numeric_expression , 'format')
サンプルソースパターン¶
入力コード:¶
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');
Results¶
TO_CHAR |
TO_CHAR |
TO_CHAR |
TO_CHAR |
TO_CHAR |
---|---|---|---|---|
2009 |
009 |
DEC-THU-31-2009 11:15PM |
125.80 |
125.80 |
出力コード:¶
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');
Results¶
TO_CHAR |
TO_CHAR |
---|---|
2009 |
Dec-Thu-31-2009 11:15PM |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-EWI-0006: The current date/numeric format may have a different behavior in Snowflake.
日付時刻値の場合¶
Translation specification for the TO_CHAR function when transforming date or timestamp values to string
説明¶
以下の形式文字列は、 TO_CHAR のような関数に適用されます。これらの文字列には、日付の区切り文字('
-
'、'/
'、':
'など)と、以下の "dateparts" および "timeparts" を含めることができます。(Redshift日付時刻形式文字列リファレンスページ)
文法構文¶
TO_CHAR (timestamp_expression, 'format')
次のテーブルは、各形式要素とSnowflakeのマッピングを指定します。
Redshift |
Snowflake |
---|---|
|
|
|
|
|
|
|
直接サポートされています |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notes: For this UDF to work correctly the Snowflake session parameter |
|
|
|
|
|
直接サポートされています |
|
|
|
直接サポートされています |
|
直接サポートされています |
|
直接サポートされています |
|
|
|
|
|
|
|
|
|
Notes: According to the redshift documentation, all timestamp with time zone are stored in UTC, which causes this format element to return a fixed result. |
|
+00 Notes: According to the redshift documentation, all timestamp with time zone are stored in UTC, which causes this format element to return a fixed result. |
|
|
|
Notes: This is a PostgreSQL template pattern modifier for "spell mode", however it does nothing on Redshift, so it is removed from the output. |
|
Notes: This is another template pattern modifier for "fixed format", however it has no use on the TO_CHAR function so it is removed. |
サンプルソースパターン¶
形式要素の直接変換(関数なし/UDFs)¶
結果は単一の TO_CHAR 関数として保存されます
Redshift¶
Query¶
SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH:MI:SS.MS') AS col1;
Result¶
+----------------------+
|col1 |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+
Snowflake¶
Query¶
SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH12:MI:SS.FF3') AS col1;
Result¶
+----------------------+
|col1 |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+
関数/UDFs を使った形式変換¶
結果は、複数の TO_CHAR、 UDFs と、日付時刻値の等価な文字列表現を生成するSnowflake組み込み関数を連結したものです
Redshift¶
Query¶
SELECT TO_CHAR(DATE '2025-07-05', '"Today is " Month DAY DD, "it belongs to the week " IW') AS result;
Result¶
+-------------------------------------------------------------+
|result |
+-------------------------------------------------------------+
|Today is July SATURDAY 05, it belongs to the week 27 |
+-------------------------------------------------------------+
Snowflake¶
Query¶
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;
Result¶
+-------------------------------------------------------------+
|result |
+-------------------------------------------------------------+
|Today is July SATURDAY 05, it belongs to the week 27 |
+-------------------------------------------------------------+
引用符で囲まれているテキスト¶
二重引用符で囲まれたテキスト内の形式要素は解釈されずに直接出力に追加され、エスケープされた二重引用符はSnowflakeでエスケープされた同等のものに変換されます。
Redshift¶
Query¶
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;
Result¶
+-----------------+-------------------+-------------------+
|result1 |result2 |result3 |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+
Snowflake¶
Query¶
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;
Result¶
+-----------------+-------------------+-------------------+
|result1 |result2 |result3 |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+
既知の問題¶
テンプレートパターン修飾子がサポートされていません¶
以下の形式テンプレート修飾子:
FM (フィルモード)
TH およびth(大文字および小文字の序数のサフィックス)
TM (翻訳モード)
Are not supported, including them in a format will generate SSC-EWI-0006
入力コード:
SELECT TO_CHAR(CURRENT_DATE, 'FMMonth'),
TO_CHAR(CURRENT_DATE, 'DDTH'),
TO_CHAR(CURRENT_DATE, 'DDth'),
TO_CHAR(CURRENT_DATE, 'TMMonth');
出力コード:
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. ***/!!!;
変数を通して渡される形式パラメーター
形式パラメーターが文字列リテラルではなく変数として渡された場合、形式要素の変換は適用できず、関数の使用時に警告 FDM が追加されます。
入力コード:
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);
出力コード:
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¶
SSC-EWI-0006: The current date/numeric format may have a different behavior in Snowflake.
SSC-FDM-0032: パラメーターがリテラル値でないため、変換を完全に適用できませんでした