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> |
<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> |
|
<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> |
|
STDDEV/STDDEV_SAMP ( [ DISTINCT |
ALL ] expression) STDDEV_POP ( [ DISTINCT |
VARIANCE/VAR_SAMP ( [ DISTINCT |
ALL ] expression) VAR_POP ( [ DISTINCT |
배열 함수¶
SUPER 데이터 타입의 배열을 만듭니다. (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>참고: 결과는 플랫폼마다 다를 수 있습니다(</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>참고: 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> ( <array> , <from> , <to> )</p><p></p><p><em>참고: 함수 이름과 두 번째 인자는 다릅니다. 동등성을 위해 인자를 조정하세요.</em></p> |
조건식¶
Redshift |
Snowflake |
|---|---|
<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> |
<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 |
|---|---|
<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> |
|
<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 |
|---|---|
<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> |
|
<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>참고: Redshift의 기본값은 UTC입니다. Snowflake 함수에는 명시적 UTC 사양이 필요합니다. 따라서 대상 타임존으로 추가됩니다.</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>Notes: 유효하지 않은 날짜 부분 형식은 Snowflake 호환 형식으로 변환됩니다.</em></p> |
<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/datediff”>DATEDIFF</a> </p><p></p><p><em>참고: 유효하지 않은 날짜 부분 형식은 Snowflake 호환 형식으로 변환됩니다.</em></p> |
|
<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/date_part”>DATE_PART</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-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>참조:</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> |
<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() |
<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> |
|
<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() |
|
<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 타임스탬프는 기본적으로 마이크로초 정밀도(6자리)로 설정됩니다. Snowflake의 기본값은 나노초 정밀도(9자리)입니다. ALTER SESSION을 사용하여 필요에 따라 정밀도를 조정합니다(예: ALTERSESSIONSETTIMESTAMP_OUTPUT_FORMAT= 'YYYY-MM-DDHH24:MI:SS.FF2';). 사용된 데이터 타입에 따라 정밀도 손실이 발생할 수 있습니다.\ \ 일부 형식은 Snowflake와 호환되지 않으므로 계정 매개 변수 DATE_INPUT_FORMAT 또는 TIME_INPUT_FORMAT를 조정하여 플랫폼 간에 기능 동등성을 유지할 수 있습니다.
해시 함수¶
해시 함수는 숫자 입력 값을 다른 값으로 변환하는 수학 함수입니다. (Redshift SQL 언어 참조 해시 함수).
Redshift |
Snowflake |
|---|---|
FNV_HASH (value [, seed]) |
HASH ( <expr> [ , <expr> … ] |
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>참고:</em> </p><ol><li><em>Redshift는 줄 바꿈, 탭 및 캐리지 리턴 문자를 문자 그대로 처리합니다. Snowflake에서는 이러한 문자를 해석합니다.</em></li><li><em>Snowflake 함수에서 중첩된 오브젝트에 액세스하려면 JSON 리터럴 및 점으로 구분된 경로가 필요합니다.</em></li><li><em>변수에 공백이 있는 경로는 따옴표로 묶어야 합니다.</em></li></ol> |
수학 함수¶
Redshift |
Snowflake |
|---|---|
DLOG10 (number) |
LOG (10, number) |
참고
Redshift 및 Snowflake 결과는 소수 자릿수가 다를 수 있습니다.
문자열 함수¶
문자열 함수는 문자열 또는 문자열로 평가되는 식을 처리하고 조작합니다. (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>참고: <code>LEFT</code>/<code>RIGHT</code>의 음수 길이의 경우 Snowflake는 빈 문자열을 반환하지만 Redshift는 오류가 발생시킵니다.</em></p> |
|
<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, ‘”’) |
<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/regexp_replace”>REGEXP_REPLACE</a> </p><p></p><p><em>참고: 이 함수에는 사용자가 <code>p</code> 값으로 표시되는 PCRE(Perl 호환 정규식) 언어를 사용하여 패턴을 해석할 수 있는 <code>parameters</code> 인자가 포함되어 있습니다. 이 인자는 문제를 방지하기 위해 제거됩니다</em>. <em>(</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>참고: 특정 특수 문자입니다. 결과는 플랫폼마다 다를 수 있습니다(</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>참고: Snowflake 및 Redshift는 대/소문자를 구분하지 않는 데이터 정렬을 사용하여 SPLIT_PART를 다르게 처리합니다.</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>참고:</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> |
|
<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> |
|
SUPER 유형 정보 함수¶
Redshift |
Snowflake |
|---|---|
<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> |
|
<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 |
|---|---|
<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> |
|
<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> |
|
<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 <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>참고: Snowflake에는 ORDER BY가 필요하며 누락된 절은 <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>참고: Redshift는 상수 또는 표현식 오프셋을 허용하지만 Snowflake는 상수 오프셋만 허용합니다</em>.</p> |
|
<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> |
|
<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> |
|
<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> |
|
<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> |
|
<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> |
|
<p><a href=”https://docs.snowflake.com/en/sql-reference/functions/percentile_cont”>PERCENTILE_CONT</a> </p><p></p><p><em>참고: 반올림은 플랫폼마다 다릅니다.</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>참고:</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> |
|
<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 |
|
VARIANCE |
알려진 문제 ¶
함수에서 따옴표가 있는 식별자에 대한 자세한 내용을 보려면 여기를 클릭하세요.
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 에서 부분적으로 지원됩니다.
함수의 따옴표로 묶인 식별자에 대한 자세한 내용은 여기를 클릭하십시오.
문법 구문¶
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 |
|---|---|
|
|
|
|
|
|
|
직접 지원 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p><code>PUBLIC.DAY_OF_WEEK_UDF</code> </p><p></p><p><em>참고: 이 UDF가 올바르게 작동하려면 Snowflake 세션 매개 변수 <code>WEEK_START</code>에 기본값(<code>0</code>)을 지정해야 합니다.</em></p> |
|
|
|
|
|
직접 지원 |
|
|
|
직접 지원 |
|
직접 지원 |
|
직접 지원 |
|
|
|
|
|
|
|
|
|
<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> |
|
<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> |
|
|
|
참고: 이는 “맞춤법 모드”에 대한 PostgreSQL 템플릿 패턴 한정자이지만, Redshift에서는 아무 작업도 수행하지 않으므로 출력에서 제거됩니다. |
|
참고: 이는 “고정 형식”의 또 다른 템플릿 패턴 한정자이지만, 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¶
SSC-EWI-0006: Snowflake에서 현재 날짜/숫자 형식의 동작이 다를 수 있습니다.
SSC-FDM-0032: 매개 변수가 리터럴 값이 아니므로 변환을 완전히 적용할 수 없습니다