CONVERT 函数 - Amazon Redshift

CONVERT 函数

CAST 函数相似,CONVERT 函数将一种数据类型转换为另一种兼容的数据类型。例如,您可以将字符串转换为日期,或将数值类型转换为字符串。CONVERT 执行运行时转换,这意味着转换不会更改源表中值的数据类型。仅在查询上下文中对其进行更改。

某些数据类型需要使用 CONVERT 函数显式转换为其他数据类型。其他数据类型可进行隐式转换(作为另一个命令的一部分),无需使用 CAST 或 CONVERT。请参阅 类型兼容性和转换

语法

CONVERT ( type, expression )

参数

type

支持的 数据类型 之一。

expression

计算结果为一个或多个值的表达式,如列名称或文本。转换 null 值将返回 null。表达式不能包含空白或空字符串。

返回类型

CONVERT 返回 type 参数指定的数据类型。

注意

如果您尝试执行有问题的转换(例如,会导致精度损失的 DECIMAL 转换),Amazon Redshift 将返回错误。有问题的转换示例如下:

SELECT CONVERT(decimal(2,1), 123.456);

或导致溢出的 INTEGER 转换:

SELECT CONVERT(smallint, 12345678);

示例

某些示例使用示例 TICKIT 数据库。有关设置示例数据的更多信息,请参阅加载数据

以下查询使用 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_TIMEZONE 函数。有关其他日期和时间函数,请参阅日期和时间函数

以下示例将可变字符数据转换为日期时间对象。

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

无法对 GEOMETRY 数据类型执行 CAST 或 CONVERT 操作来将其更改为其他数据类型。不过,您可以提供扩展的已知二进制 (EWKB) 格式的字符串文字的十六进制表示形式,作为接受 GEOMETRY 参数的函数的输入。例如,下面的 ST_AsText 函数需要 GEOMETRY 数据类型。

SELECT ST_AsText('01010000000000000000001C400000000000002040');
st_astext ------------ POINT(7 8)

您也可以明确指定 GEOMETRY 数据类型。

SELECT ST_AsText('010100000000000000000014400000000000001840'::geometry);
st_astext ------------ POINT(5 6)