SnowConvert AI - Redshift - 組み込み関数

注釈

組み込み関数とそれに相当するSnowflake関数の詳細については、 共通組み込み関数 もご参照ください。

集計関数

集約関数は、入力値の集合から単一の結果値を計算します。( Redshift SQL言語リファレンス集約関数 )。

Redshift

Snowflake

<p></p><p><a href="https://docs.snowflake.com/ja/sql-reference/functions/any_value">ANY_VALUE</a> ( [ DISTINCT

ALL ] 式)

AVG ( [ DISTINCT | ALL ] 式)

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/avg">AVG</a> ( [ DISTINCT ] 式)</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/ja/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

<p><a href="https://docs.aws.amazon.com/redshift/latest/dg/r_STDDEV_functions.html">STDDEV/STDDEV_SAMP</a> ( [ 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> ( [ DISTINCT

ALL ]

VAR_POP ( [ DISTINCT

配列関数

SUPERデータ型の配列を作成します。( Redshift SQL言語リファレンス配列関数 )。

Redshift

Snowflake

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

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/array_construct">ARRAY_CONSTRUCT</a> </p><p>( [ &#x3C;expr1> ] [ , &#x3C;expr2> [ , ... ] ] )</p>

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>super_expr1</em>,<em>super_expr2</em>,.. )</p>

<p><a href="https://docs.snowflake.com/ja/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_LENGTHsuper_expr

ARRAY_SIZE ( <array> | <variant>)

SPLIT_TO_ARRAYstring,delimiter

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/split">SPLIT</a> (&#x3C;string>, &#x3C;separator> )</p><p></p><p><em>:Redshiftでは区切り文字がなくても構いませんが、Snowflakeでは区切り文字が必要です。</em></p>

SUBARRAYsuper_expr, start_position, length

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/array_slice">ARRAY_SLICE</a> ( &#x3C;array> , &#x3C;from> , &#x3C;to> )</p><p></p><p><em>注意: 関数名と第2引数が異なります。等価性のために引数を調整してください。</em></p>

条件式

Redshift

Snowflake

DECODE

<p><a href="https://docs.snowflake.com/ja/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>

COALESCEexpression, expression, ... )

COALESCEexpression, expression, ... )

GREATEST ( value [, ...] )

<p></p><p><a href="https://docs.snowflake.com/ja/sql-reference/functions/greatest_ignore_nulls">GREATEST_IGNORE_NULLS</a> ( &#x3C;expr1> [, &#x3C;expr2> ... ] )</p><p></p>

LEAST ( value [, ...] )

LEAST_IGNORE_NULLS ( <expr1> [, <expr2> ... ] )

NVLexpression, expression, ... )

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/nvl"><em>NVL</em></a> <em>( expression, expression )</em></p><p></p><p><em>注意:RedshiftのNVLは複数の引数を受け付けますが、SnowflakeのNVLは2つしか受け付けません。Redshiftの動作に合わせるため、引数が2つ以上のNVLはCOALESCEに変換されます。</em></p>

NVL2

NVL2

NULLIF

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/nullif">NULLIF</a> </p><p></p><p><em>注意:RedshiftのNULLIFは、Snowflakeとは異なり、一部の文字列比較では末尾の空白が無視されます。したがって、この変換は等価性のためにRTRIMを追加します。</em></p>

データ型フォーマット関数

データ型フォーマット関数は、あるデータ型から別のデータ型に値を変換する簡単な方法を提供します。これらの関数のそれぞれについて、第1引数は常にフォーマットされる値で、第2引数には新しいフォーマットのテンプレートが含まれます。( Redshift SQL言語リファレンスデータ型フォーマット関数 )。

Redshift

Snowflake

TO_CHAR

<p><a href="https://docs.snowflake.com/ja/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/ja/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/ja/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_ADDdatepart, 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>注意:無効な日付部分のフォーマットは、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/ja/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/ja/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])

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/hash"><em>HASH</em></a> <em>( &#x3C;expr> [ , &#x3C;expr> ... ]。

JSON 関数

Redshift

Snowflake

JSON_EXTRACT_PATH_TEXT

<p><a href="https://docs.snowflake.com/ja/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/ja/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は空の文字列を返します。</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/ja/sql-reference/functions/substr"><em>SUBSTRING</em></a> </p><p></p><p><em>注意:</em>Snowflakeはこの機能を部分的にサポートしています。Redshiftの <code>SUBSTRING</code> は、 <code>start_position</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/ja/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/ja/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/ja/sql-reference/functions/dense_rank">DENSE_RANK</a> </p><p></p><p><em>注意:SnowflakeではORDER BYは必須です。欠落している句は <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/ja/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>注意:SnowflakeではORDER BYは必須です。欠落している句は <code>ORDER BY 1</code> に置き換えられます。</em></p>

NTILE

<p><a href="https://docs.snowflake.com/ja/sql-reference/functions/ntile">NTILE</a> </p><p></p><p><em>注意:SnowflakeではORDER BYは必須です。欠落している句は <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>注意:SnowflakeではORDER BYは必須です。欠落している句は <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/ja/sql-reference/functions/row_number">ROW_NUMBER</a> </p><p></p><p><em>注意:SnowflakeではORDER BYは必須です。欠落している句は <code>ORDER BY 1</code> に置き換えられます。</em></p>

STDDEV_SAMP

STDDEV

VAR_SAMP

VARIANCE

既知の問題

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

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;
結果

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 言語リファレンス 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

YYYY および YY

直接サポートされています

YYY および 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, 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

TZ および tz

<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 |
+-----------------+-------------------+-------------------+

既知の問題

テンプレートパターン修飾子がサポートされていません

以下の形式テンプレート修飾子:

  • 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: パラメーターがリテラル値でないため、変換を完全に適用できませんでした