转换函数

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

本主题内容:

函数列表

子类别

函数

备注

任何数据类型

CAST、::

TRY_CAST

CAST 的错误处理版本。

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

TO_CHAR、TO_VARCHAR

TO_BINARY

TRY_TO_BINARY

TO_BINARY 的错误处理版本。

数值数据类型

TO_DECFLOAT

TO_DECIMAL、TO_NUMBER、TO_NUMERIC

TO_DOUBLE

TRY_TO_DECFLOAT

Error-handling version of TO_DECFLOAT.

TRY_TO_DECIMAL、TRY_TO_NUMBER、TRY_TO_NUMERIC

Error-handling versions of TO_DECIMAL, TO_NUMBER, and so on.

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_*

Error-handling versions of TO_TIMESTAMP, and so on.

半结构化数据类型

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

Four-digit [1] year.

YY

Two-digit [1] year, controlled by the TWO_DIGIT_CENTURY_START session parameter. For example, when set to 1980, values of 79 and 80 are parsed as 2079 and 1980, respectively.

MM

Two-digit [1] month (01 = January, and so on).

MON

Abbreviated month name [2].

MMMM

Full month name [2].

DD

Two-digit [1] day of month (01 through 31).

DY

星期的缩写。

HH24

Two digits [1] for hour (00 through 23). You must not specify AM / PM.

HH12

Two digits [1] for hour (01 through 12). You can specify AM / PM.

AMPM

上午 (AM)/下午 (PM)。仅可用于 HH12不能 用于 HH24)。

MI

Two digits [1] for minute (00 through 59).

SS

Two digits [1] for second (00 through 59).

FF[0-9]

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

TZH:TZMTZHTZMTZH

Two-digit [1] time zone hour and minute, offset from UTC. Can be prefixed by +/- for sign.

UUUU

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

[1] 位数描述了将值序列化为文本时生成的输出。解析文本时,Snowflake 最多可接受的指定位数。例如,天数可以是一位或两位数。

[2] For the MON format element, the output produced when serializing values to text is the abbreviated month name. For the MMMM format element, the output produced when serializing values to text is the full month name. When parsing text, Snowflake accepts the three-digit abbreviation or the full month name for both MON and MMMM. For example, "January" or "Jan", "February" or "Feb", and so on are accepted when parsing text.

备注

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

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

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

使用说明

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

示例

使用指定的 dd/mm/yyyy 输入格式将字符串转换为日期。输出中日期的显示格式由 DATE_OUTPUT_FORMAT 会话参数(默认为 YYYY-MM-DD)确定。

SELECT TO_DATE('3/4/2024', 'dd/mm/yyyy');
Copy
+-----------------------------------+
| TO_DATE('3/4/2024', 'DD/MM/YYYY') |
|-----------------------------------|
| 2024-04-03                        |
+-----------------------------------+

将日期转换为字符串,并将 日期输出格式 指定为 mon dd, yyyy

SELECT TO_VARCHAR('2024-04-05'::DATE, 'mon dd, yyyy');
Copy
+------------------------------------------------+
| TO_VARCHAR('2024-04-05'::DATE, 'MON DD, YYYY') |
|------------------------------------------------|
| Apr 05, 2024                                   |
+------------------------------------------------+

转换函数中的二进制格式

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

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

  • HEX

  • BASE64

  • UTF-8

有关这些格式的更多信息,请参阅 支持的二进制格式概述

有关这些格式的使用示例,请参阅 二进制输入和输出 的“示例”部分。

语言: 中文