

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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>

 *type*   
其中一個支援的[資料類型](c_Supported_data_types.md)。

 *表達式*   
任何評估為一或多個值的表達式，例如欄名或常值。轉換 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
```

這個範例會將 saletime 欄轉換成僅限時間，並從每一列移除日期。

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

如需將時間戳記從某個時區轉換為另一個時區的詳細資訊，請參閱[CONVERT\$1TIMEZONE 函數](CONVERT_TIMEZONE.md)。如需其他日期和時間函數，請參閱[日期和時間函數](Date_functions_header.md)。

下列範例會將可變字元資料轉換成日期時間物件。

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

**注意**  
您無法在 `GEOMETRY` 資料類型上執行 CAST 或 CONVERT 操作，將其變更為其他資料類型。但是，您可以為接受 `GEOMETRY` 引數的函數提供擴充已知二進位 (EWKB) 格式的字串常值十六進位表示法做為輸入。例如，以下 `ST_AsText` 函數預期 `GEOMETRY` 資料類型。  

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

```
st_astext  
------------
 POINT(7 8)
```
您也可以明確指定 `GEOMETRY` 資料類型。  

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

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