SnowConvert AI - Redshift - 기본 제공 함수

참고

기본 제공 함수 및 그와 동등한 Snowflake 함수에 대한 자세한 내용은 [일반적인 기본 제공 함수](../general/ built-in-functions.md)도 참조하세요.

집계 함수

집계 함수는 입력 값 세트에서 단일 결과 값을 계산합니다. (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> ( [ DISTINCT ] expression)</p><p></p><p><em>참고: Redshift와 Snowflake는 데이터 타입 반올림/형식 지정으로 인해 정밀도/소수점이 다를 수 있습니다.</em></p>

COUNT

COUNT

LISTAGG

<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/listagg”>LISTAGG</a> </p><p></p><p><em>참고: Redshift의 DISTINCT는 후행 공백을 무시하지만(‘a ‘ = ‘a’) Snowflake는 그렇지 않습니다. (</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>참고<strong>: Snowflake는 날짜 유형의 사용을 허용하지 않지만</strong> Redshift는 허용합니다. (</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

STDDEV/STDDEV_SAMP ( [ DISTINCT

ALL ] expression)

STDDEV_POP ( [ DISTINCT

SUM

SUM

VARIANCE/VAR_SAMP ( [ DISTINCT

ALL ] expression)

VAR_POP ( [ DISTINCT

배열 함수

SUPER 데이터 타입의 배열을 만듭니다. (Redshift SQL 언어 참조 배열 함수).

Redshift

Snowflake

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

ARRAY_CONSTRUCT

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

ARRAY_CONCAT ( super_expr1, super_expr2 )

ARRAY_CAT ( <array1> , <array2> )

ARRAY_FLATTEN

( super_expr1,super_expr2,.. )

<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/array_flatten”>ARRAY_FLATTEN</a> ( &#x3C;array> ) </p><p></p><p><em>참고: 결과는 플랫폼마다 다를 수 있습니다(</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>참고: Redshift에서는 구분 기호 누락을 허용하지만 Snowflake에는 구분 기호가 필요하며, 기본값은 쉼표입니다.</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>참고: 함수 이름과 두 번째 인자는 다릅니다. 동등성을 위해 인자를 조정하세요.</em></p>

조건식

Redshift

Snowflake

DECODE

<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/decode”>DECODE</a> </p><p></p><p><em>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고: Redshift의 NVL은 여러 인자를 허용하지만 Snowflake의 NVL은 2개만 허용합니다. Redshift 동작과 일치시키기 위해, 3개 이상의 인자가 있는 NVL이 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>참고: Redshift의 NULLIF는 Snowflake와 달리 일부 문자열 비교에서 후행 공백을 무시합니다. 따라서 변환이 진행되면서 동등성을 위해 RTRIM이 추가됩니다.</em></p>

데이터 타입 형식 지정 함수

데이터 타입 형식 지정 함수를 사용하면 값을 한 데이터 타입에서 다른 데이터 타입으로 쉽게 변환할 수 있습니다. 이러한 각 함수의 경우, 첫 번째 인자는 항상 형식을 지정할 값이고 두 번째 인자에는 새 형식에 대한 템플릿이 포함됩니다. (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>참고: 이 함수에 대한 Snowflake의 지원은 부분적입니다(</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>참고: Snowflake의 <code>TO_DATE</code>는 Redshift의 느슨한 <code>TO_DATE</code>와 달리 ‘20010631’(6월에는 30일까지 있음)과 같은 유효하지 않은 날짜에서는 실패합니다. Snowflake에서는 <code>TRY_TO_DATE</code>를 사용하고 NULL을 반환하여 이러한 사례를 처리합니다. (</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>

날짜 및 시간 함수

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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고: Redshift의 기본값은 UTC입니다. Snowflake 함수에는 명시적 UTC 사양이 필요합니다. 따라서 대상 타임존으로 추가됩니다.</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>Notes: 유효하지 않은 날짜 부분 형식은 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>참고: 유효하지 않은 날짜 부분 형식은 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>참조:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고: 유효하지 않은 날짜 부분 형식은 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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고:</em> 지원되는 파트타임 또는 날짜 시간: DAY, DOW, DOY, EPOCH, HOUR, MINUTE, MONTH, QUARTER, SECOND, WEEK, YEAR. </p>

참고

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.

해시 함수

해시 함수는 숫자 입력 값을 다른 값으로 변환하는 수학 함수입니다. (Redshift SQL 언어 참조 해시 함수).

Redshift

Snowflake

FNV_HASH (value [, seed])

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

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>참고:</em> </p><ol><li><em>Redshift는 줄 바꿈, 탭 및 캐리지 리턴 문자를 문자 그대로 처리합니다. Snowflake에서는 이러한 문자를 해석합니다.</em></li><li><em>Snowflake 함수에서 중첩된 오브젝트에 액세스하려면 JSON 리터럴 및 점으로 구분된 경로가 필요합니다.</em></li><li><em>변수에 공백이 있는 경로는 따옴표로 묶어야 합니다.</em></li></ol>

수학 함수

참고

Redshift 및 Snowflake 결과는 소수 자릿수가 다를 수 있습니다.

문자열 함수

문자열 함수는 문자열 또는 문자열로 평가되는 식을 처리하고 조작합니다. (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>참고: <code>LEFT</code>/<code>RIGHT</code>의 음수 길이의 경우 Snowflake는 빈 문자열을 반환하지만 Redshift는 오류가 발생시킵니다.</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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고: 특정 특수 문자입니다. 결과는 플랫폼마다 다를 수 있습니다(</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>참고: Snowflake 및 Redshift는 대/소문자를 구분하지 않는 데이터 정렬을 사용하여 SPLIT_PART를 다르게 처리합니다.</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>참고:</em> Snowflake는 이 함수를 부분적으로 지원합니다. 양수가 아닌 <code>start_position</code>을 포함하는 Redshift의 <code>SUBSTRING</code>은 <code>start_position + number_characters</code>를 계산합니다(결과가 양수가 아닌 경우 ‘’ 반환). Snowflake의 동작은 다릅니다. (<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>참고: Redshift는 자르기를 위해 키워드(BOTH, LEADING, TRAILING)를 사용하지만 Snowflake는 TRIM, LTRIM, RTRIM을 사용합니다.</em></p>

UPPER

UPPER

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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</em><a href=”../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresql/ssc-fdm-pg0013.md”>SSC-FDM-PG0013</a><em> 참조).</em></p>

윈도우 함수

Redshift

Snowflake

AVG

<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/avg”><em>AVG</em></a> </p><p></p><p><em>참고: AVG 반올림/형식 지정은 Redshift와 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>참고: ORDER BY는 Snowflake에서 필수입니다. 누락된 절은 <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>참고: Snowflake에는 ORDER BY가 필요하며 누락된 절은 <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>참고: Snowflake에는 ORDER BY가 필요하며 누락된 절은 <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>참고: Redshift는 상수 또는 표현식 오프셋을 허용하지만 Snowflake는 상수 오프셋만 허용합니다</em>.</p>

LISTAGG

<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/listagg”>LISTAGG</a> </p><p></p><p><em>참고: Redshift의 DISTINCT는 후행 공백을 무시하지만(‘a ‘ = ‘a’) Snowflake는 그렇지 않습니다. (</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>참고<strong>: Snowflake는 날짜 유형의 사용을 허용하지 않지만</strong> Redshift는 허용합니다. (</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>참고: ORDER BY는 Snowflake에서 필수입니다. 누락된 절은 <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>참고: ORDER BY는 Snowflake에서 필수입니다. 누락된 절은 <code>ORDER BY 1</code>로 대체됩니다. (</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>참고: ORDER BY는 Snowflake에서 필수입니다. 누락된 절은 <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>참고: 반올림은 플랫폼마다 다릅니다.</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>참고:</em> <em>결과는 플랫폼마다 다를 수 있습니다(</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>참고: ORDER BY는 Snowflake에서 필수입니다. 누락된 절은 <code>ORDER BY 1</code>로 대체됩니다.</em></p>

STDDEV_SAMP

STDDEV

VAR_SAMP

VARIANCE

알려진 문제

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

IDENTITY

설명

IDENTITY 함수는 테이블의 지정된 열에서 작업을 수행하여 ID의 초기 값을 결정하는 시스템 함수입니다. 초기값을 사용할 수 없는 경우 기본값은 함수에 제공된 값으로 설정됩니다. 이것은 Snowflake의 시퀀스로 변환됩니다.

문법 구문

 "identity"(oid_id, oid_table_id, default)

참고

이 함수는 더 이상 Redshift에서 지원되지 않습니다. 기본값을 사용하여 ID를 정의하고 표준 ID 열처럼 작동합니다.

샘플 소스 패턴

입력 코드:

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;
결과

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;
결과

id

inventory_combo

1

5

2

8

3

11

3

14

관련 EWIs

알려진 문제는 없습니다.

TO_CHAR

날짜 함수

설명

TO\CHAR 타임스탬프 또는 숫자 식을 문자 문자열 데이터 형식으로 변환합니다. (Redshift SQL Language Reference TO_CHAR 함수)

경고

이 함수는 Snowflake 에서 부분적으로 지원됩니다.

For more information, see Quoted identifiers in functions.

문법 구문

 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');
결과

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');
결과

TO_CHAR

TO_CHAR

2009

Dec-Thu-31-2009 11:15PM

알려진 문제

문제가 발견되지 않았습니다.

관련 EWIs

  • SSC-EWI-0006: Snowflake에서 현재 날짜/숫자 형식의 동작이 다를 수 있습니다.

날짜/시간 값의 경우

날짜 또는 타임스탬프 값을 문자열로 변환할 때 TO_CHAR 함수에 대한 변환 사양

설명

다음 형식 문자열은 TO_CHAR 과 같은 함수에 적용됩니다. 이러한 문자열에는 날짜/시간 구분 기호(예: ‘-’, ‘/’ 또는 ‘:’)와 다음 “dateparts” 및 “timeparts”가 포함될 수 있습니다. (Redshift 날짜/시간 형식 문자열 참조 페이지)

문법 구문

TO_CHAR (timestamp_expression, 'format')

다음 테이블은 각 형식 요소의 Snowflake에 대한 매핑을 지정합니다.

Redshift

Snowflake

BC, AD, bc, ad (대문자 및 소문자 시대 표시기)

PUBLIC.ERA_INDICATORS_UDF

B.C,. A.D., b.c., a.d. (마침표가 있는 대문자 및 소문자 시대 표시)

PUBLIC.ERA_INDICATORS_WITH_POINTS_UDF

CC

PUBLIC.CENTURY_UDF

YYYYYY

직접 지원

YYYY

PUBLIC.YEAR_PART_UDF

Y,YYY

PUBLIC.YEAR_WITH_COMMA_UDF

IYYY

YEAROFWEEKISO

I, IY, IYY

PUBLIC.ISO_YEAR_PART_UDF

Q

QUARTER

MONTH, Month, month

PUBLIC.FULL_MONTH_NAME_UDF

MON, Mon, mon

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, Day, day

PUBLIC.DAYNAME_LONG_UDF

DY, Dy, dy

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>참고: 이 UDF가 올바르게 작동하려면 Snowflake 세션 매개 변수 <code>WEEK_START</code>에 기본값(<code>0</code>)을 지정해야 합니다.</em></p>

ID

DAYOFWEEKISO

J

PUBLIC.JULIAN_DAY_UDF

HH24

직접 지원

HH

HH12

HH12

직접 지원

MI

직접 지원

SS

직접 지원

MS

FF3

US

FF6

AM, PM, am, pm (대문자 및 소문자 자오선 표시기)

PUBLIC.MERIDIAN_INDICATORS_UDF

A.M., P.M., a.m., p.m. (마침표가 있는 대문자 및 소문자 자오선 표시)

PUBLIC.MERIDIAN_INDICATORS_WITH_POINTS_UDF

TZtz

<p><code>UTC</code> 및 <code>utc</code> </p><p></p><p><em>참고: </em><a href=”https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz”><em>redshift 설명서</em></a><em>에 따르면, 타임존이 있는 모든 타임스탬프는 UTC로 저장되므로 이 형식 요소가 고정된 결과를 반환합니다.</em></p>

OF

<p>+00 </p><p></p><p><em>참고:</em> <a href=”https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-timestamptz”><em>redshift 설명서</em></a><em>에 따르면 타임존이 있는 모든 타임스탬프는 UTC로 저장되므로 이 형식 요소가 고정된 결과를 반환합니다.</em></p>

SSSS

PUBLIC.SECONDS_PAST_MIDNIGHT

SP

참고: 이는 “맞춤법 모드”에 대한 PostgreSQL 템플릿 패턴 한정자이지만, Redshift에서는 아무 작업도 수행하지 않으므로 출력에서 제거됩니다.

FX

참고: 이는 “고정 형식”의 또 다른 템플릿 패턴 한정자이지만, TO_CHAR 함수에서는 사용되지 않으므로 제거됩니다.

샘플 소스 패턴

직접 형식 요소 변환(함수 없음/UDFs)

결과는 단일 TO_CHAR 함수로 보존됩니다

Redshift
쿼리
 SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH:MI:SS.MS') AS col1;
결과
+----------------------+
|col1                  |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+

Snowflake
쿼리
 SELECT TO_CHAR('2013-10-03 13:50:15.456871'::TIMESTAMP, 'DD/MM/YY HH12:MI:SS.FF3') AS col1;
결과
+----------------------+
|col1                  |
+----------------------+
|03/10/13 01:50:15.456 |
+----------------------+

함수를 사용한 형식 변환/UDFs

결과는 여러 개의 TO_CHAR, UDFs 및 Snowflake 기본 제공 함수를 연결하여 날짜/시간 값의 동등한 문자열 표현을 생성합니다

Redshift
쿼리
 SELECT TO_CHAR(DATE '2025-07-05', '"Today is " Month DAY DD, "it belongs to the week " IW') AS result;
결과
+-------------------------------------------------------------+
|result                                                       |
+-------------------------------------------------------------+
|Today is  July      SATURDAY  05, it belongs to the week  27 |
+-------------------------------------------------------------+

Snowflake
쿼리
 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                                                       |
+-------------------------------------------------------------+
|Today is  July      SATURDAY  05, it belongs to the week  27 |
+-------------------------------------------------------------+

인용된 텍스트

큰따옴표로 묶인 텍스트의 형식 요소는 해석하지 않고 바로 출력에 추가되며, 이스케이프된 큰따옴표는 Snowflake 이스케이프된 해당 요소로 변환됩니다.

Redshift
쿼리
 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;
결과
+-----------------+-------------------+-------------------+
|result1          |result2            |result3            |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+

Snowflake
쿼리
 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;
결과
+-----------------+-------------------+-------------------+
|result1          |result2            |result3            |
+-----------------+-------------------+-------------------+
|01 TESTING DD 16 |01 TEST5NG "16" 16 |01 TESTING "DD" 16 |
+-----------------+-------------------+-------------------+

Known Issues

지원되지 않는 템플릿 패턴 수정자

다음 형식의 템플릿 수정자를 사용할 수 있습니다.

  • FM (채우기 모드)

  • TH 및 th(대문자 및 소문자 서수 접미사)

  • TM (변환 모드)

지원되지 않으며, 형식에 포함하면 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

  1. SSC-EWI-0006: Snowflake에서 현재 날짜/숫자 형식의 동작이 다를 수 있습니다.

  2. SSC-FDM-0032: 매개 변수가 리터럴 값이 아니므로 변환을 완전히 적용할 수 없습니다