转换函数

此系列函数可用于将任何 Snowflake 数据类型的表达式转换为另一种数据类型。

本主题内容:

函数列表

子类别

函数

备注

任何数据类型

CAST、::

TRY_CAST

CAST 的错误处理版本。

文本/字符/二进制数据类型

TO_CHAR、TO_VARCHAR

TO_BINARY

TRY_TO_BINARY

TO_BINARY 的错误处理版本。

数值数据类型

TO_DECIMAL、TO_NUMBER、TO_NUMERIC

TO_DOUBLE

TRY_TO_DECIMAL、TRY_TO_NUMBER、TRY_TO_NUMERIC

TO_DECIMAL、TO_NUMBER 等的错误处理版本。

TRY_TO_DOUBLE

TO_DOUBLE 的错误处理版本。

布尔数据类型

TO_BOOLEAN

TRY_TO_BOOLEAN

TO_BOOLEAN 的错误处理版本。

日期和时间数据类型

TO_DATE、DATE

TO_TIME、TIME

TO_TIMESTAMP / TO_TIMESTAMP_*

TRY_TO_DATE

TO_DATE 的错误处理版本。

TRY_TO_TIME

TO_TIME 的错误处理版本。

TRY_TO_TIMESTAMP / TRY_TO_TIMESTAMP_*

TO_TIMESTAMP 等的错误处理版本。

半结构化数据类型

TO_ARRAY

TO_OBJECT

TO_VARIANT

地理空间数据类型

TO_GEOGRAPHY

TRY_TO_GEOGRAPHY

TO_GEOGRAPHY 的错误处理版本

ST_GEOGFROMGEOHASH

ST_GEOGPOINTFROMGEOHASH

ST_GEOGRAPHYFROMWKB

ST_GEOGRAPHYFROMWKT

TO_GEOMETRY

TRY_TO_GEOMETRY

TO_GEOMETRY 的错误处理版本

ST_GEOMETRYFROMWKB

ST_GEOMETRYFROMWKT

错误处理转换函数

带有 TRY_ 前缀的转换函数是其各自转换函数的特殊版本。当无法执行转换时,这些函数返回 NULL 值,而不是引发错误:

请注意,这些函数仅支持字符串表达式(即 VARCHAR 或 CHAR 数据类型)作为输入。

重要

这些错误处理转换函数针对转换错误相对不常见的情况进行了优化:

  • 如果没有(或很少)错误,则这些函数应该不会对性能产生明显影响。

  • 如果转换失败次数很多,则使用这些函数可能会导致性能明显降低。此外,将它们与 VARIANT 类型结合使用时,某些操作可能会导致性能降低。

转换函数中的数字格式

函数 TO_DECIMAL、TO_NUMBER、TO_NUMERICTO_DOUBLE 接受可选参数,指定输入字符串的格式(如果输入表达式的计算结果为字符串)。有关此参数可以具有的值的更多信息,请参阅 SQL 格式模型

转换函数中的日期和时间格式

以下函数允许您指定预期的日期、时间或时间戳格式,以解析或生成字符串:

您可以在可选实参中指定格式,使用以下不区分大小写的元素来描述格式:

格式元素

描述

YYYY

四位数年份。

YY

两位数年份,由 TWO_DIGIT_CENTURY_START 会话参数控制,例如,当设置为 1980 时,7980 这两个值将分别解析为 20791980

MM

两位数月份(01 = 一月,以此类推)。

MON

月份名称的全称或缩写。

MMMM

月份名称的全称。

DD

两位数日期(01 至 31)。

DY

星期的缩写。

HH24

两位数小时(00 至 23)。不能 指定 AM / PM

HH12

两位数小时(01 至 12)。可以指定 AM/PM

AMPM

上午 (am)/下午 (pm)。仅可用于 HH12不能 用于 HH24)。

MI

两位数分钟(00 至 59)。

SS

两位数秒钟(00 至 59)。

FF[0-9]

精度为 0(秒)至 9(纳秒)的小数秒,例如 FFFF0FF3FF9。指定 FF 等同于 FF9 (纳秒)。

TZH:TZMTZHTZMTZH

时区小时和分钟,从 UTC 开始偏移。可以用 +/- 作为符号前缀。

UUUU

四位数年份,格式为 ISO (link removed),负数为 BCE 年份。

备注

  • 当使用仅日期格式时,关联时间假定为当天的午夜。

  • 格式中双引号之间或上述元素以外的任何内容都会被解析/格式化,但不会被解释。

  • 有关有效范围、位数和最佳实践的更多详细信息,请参阅 有关使用日期、时间和时间戳格式的其他信息

使用说明

格式中双引号之间或上述元素以外的任何内容都会被解析/格式化,但不会被解释。

示例

SELECT TO_DATE('3/4/2013', 'dd/mm/yyyy');

-----------------------------------+
 to_date('3/4/2013', 'dd/mm/yyyy') |
-----------------------------------+
 2013-04-03                        |
-----------------------------------+
Copy
SELECT TO_VARCHAR('2013-04-05'::date, 'mon dd, yyyy');

------------------------------------------------+
 to_varchar('2013-04-05'::date, 'mon dd, yyyy') |
------------------------------------------------+
 Apr 05, 2013                                   |
------------------------------------------------+
Copy

转换函数中的二进制格式

TO_CHAR、TO_VARCHARTO_BINARY 接受可选实参,指定要解析或生成字符串的预期格式。

格式可以是以下字符串(不区分大小写):

  • HEX

  • BASE64

  • UTF-8

有关这些格式的更多信息,请参阅 Overview of Supported Binary Formats

有关这些格式的使用示例,请参阅 Binary Input and Output 的“示例”部分。

语言: 中文