

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# CONVERT 関数
<a name="r_CONVERT_function"></a>

[CAST 関数](https://docs.aws.amazon.com/redshift/latest/dg/r_CAST_function.html)と同様に、CONVERT 関数はあるデータ型を互換性のある別のデータ型に変換します。例えば、文字列を日付に変換したり、数値型を文字列に変換したりできます。CONVERT は、ランタイム変換を実行します。つまり、変換によってソーステーブルの値のデータ型は変更されません。クエリのコンテキストでのみ変更されます。

特定のデータ型は、CONVERT 関数を使用して、他のデータ型に明示的に変換する必要があります。その他のデータ型は、CAST や CONVERT を使用せずに、別のコマンドの一部として暗黙的に変換できます。「[型の互換性と変換](c_Supported_data_types.md#r_Type_conversion)」を参照してください。

## 構文
<a name="r_CONVERT-syntax"></a>

```
CONVERT ( type, expression )
```

## 引数
<a name="r_CONVERT-arguments"></a>

 *型*   
サポートされる [データ型](c_Supported_data_types.md) の 1 つ。

 *expression*   
1 つ以上の値 (列名、値など) に評価される式。null 値を変換すると、null が返されます。式に、空白または空の文字列を含めることはできません。

## 戻り型
<a name="r_CONVERT-return-type"></a>

CONVERT は、*type* 引数で指定されたデータ型を返します。

**注記**  
次の正確性が失われる DECIMAL 変換のように、問題のある変換を実行しようとすると、Amazon Redshift はエラーを返します。  

```
SELECT CONVERT(decimal(2,1), 123.456);
```
また、次の INTEGER 変換では、オーバーフローが生じます。  

```
SELECT CONVERT(smallint, 12345678);
```

## 例
<a name="r_CONVERT-examples"></a>

一部の例では、サンプルの [TICKIT データベース](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)を使用しています。サンプルデータの設定の詳細については、「[データをロードする](https://docs.aws.amazon.com/redshift/latest/gsg/cm-dev-t-load-sample-data.html)」を参照してください。

次のクエリは、CONVERT 関数を使用して小数の列を整数に変換します。

```
SELECT CONVERT(integer, pricepaid)
FROM sales WHERE salesid=100;
```

この例では、整数を文字列に変換します。

```
SELECT CONVERT(char(4), 2008);
```

次の例では、現在の日付と時刻を可変文字データ型に変換します。

```
SELECT CONVERT(VARCHAR(30), GETDATE());

getdate
---------
2023-02-02 04:31:16
```

この例では、販売時間の列を時刻のみに変換し、各行から日付を削除します。

```
SELECT CONVERT(time, saletime), salesid
FROM sales order by salesid limit 10;
```

タイムスタンプをあるタイムゾーンから別のタイムゾーンに変換する方法については、「[CONVERT\$1TIMEZONE 関数](CONVERT_TIMEZONE.md)」を参照してください。その他の日付および時刻関数については、「[日付および時刻関数](Date_functions_header.md)」を参照してください。

次の例では、可変文字データを datetime オブジェクトに変換します。

```
SELECT CONVERT(datetime, '2008-02-18 02:36:48') as mysaletime;
```

**注記**  
`GEOMETRY` データ型に対して CAST や CONVERT オペレーションを実行して別のデータ型に変更することはできません。ただし、`GEOMETRY` 引数を受け入れる関数への入力として、Extended Well-Known Binary (EWKB) 形式の 16 進数の文字列リテラルを指定できます。例えば、後続の `ST_AsText` 関数は `GEOMETRY` データ型を想定します。  

```
SELECT ST_AsText('01010000000000000000001C400000000000002040');
```

```
st_astext  
------------
 POINT(7 8)
```
また、明示的に `GEOMETRY` データ型を指定することもできます。  

```
SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
```

```
st_astext  
------------
 POINT(5 6)
```