转换函数¶
此系列函数可用于将任何 Snowflake 数据类型的表达式转换为另一种数据类型。
本主题内容:
函数列表¶
子类别 |
函数 |
备注 |
|---|---|---|
任何数据类型 |
||
CAST 的错误处理版本。 |
||
文本/字符/二进制数据类型 |
||
TO_BINARY 的错误处理版本。 |
||
数值数据类型 |
||
Error-handling version of TO_DECFLOAT. |
||
Error-handling versions of TO_DECIMAL, TO_NUMBER, and so on. |
||
TO_DOUBLE 的错误处理版本。 |
||
布尔数据类型 |
||
TO_BOOLEAN 的错误处理版本。 |
||
日期和时间数据类型 |
||
TO_DATE 的错误处理版本。 |
||
TO_TIME 的错误处理版本。 |
||
Error-handling versions of TO_TIMESTAMP, and so on. |
||
半结构化数据类型 |
||
地理空间数据类型 |
||
TO_GEOGRAPHY 的错误处理版本 |
||
TO_GEOMETRY 的错误处理版本 |
||
错误处理转换函数¶
带有 TRY_ 前缀的转换函数是其各自转换函数的特殊版本。当无法执行转换时,这些函数返回 NULL 值,而不是引发错误:
这些函数仅支持字符串表达式(即 VARCHAR 或 CHAR 数据类型)作为输入。
重要
这些错误处理转换函数针对转换错误相对不常见的情况进行了优化:
如果没有(或很少)错误,则这些函数应该不会对性能产生明显影响。
如果转换失败次数很多,则使用这些函数可能会导致性能明显降低。此外,将它们与 VARIANT 类型结合使用时,某些操作可能会导致性能降低。
转换函数中的数字格式¶
函数 TO_DECIMAL、TO_NUMBER、TO_NUMERIC 和 TO_DOUBLE 接受可选参数,指定输入字符串的格式(如果输入表达式的计算结果为字符串)。有关此参数可以具有的值的更多信息,请参阅 SQL 格式模型。
转换函数中的日期和时间格式¶
以下函数允许您指定预期的日期、时间或时间戳格式,以解析或生成字符串:
您可以在可选实参中指定格式,使用以下不区分大小写的元素来描述格式:
格式元素 |
描述 |
|---|---|
|
Four-digit [1] year. |
|
Two-digit [1] year, controlled by the TWO_DIGIT_CENTURY_START session parameter. For example, when set to |
|
Two-digit [1] month ( |
|
Abbreviated month name [2]. |
|
Full month name [2]. |
|
Two-digit [1] day of month ( |
|
星期的缩写。 |
|
Two digits [1] for hour ( |
|
Two digits [1] for hour ( |
|
上午 ( |
|
Two digits [1] for minute ( |
|
Two digits [1] for second ( |
|
精度为 ``0``(秒)至 ``9``(纳秒)的小数秒,例如 |
|
Two-digit [1] time zone hour and minute, offset from UTC. Can be prefixed by |
|
四位数年份,格式为 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');
+-----------------------------------+
| TO_DATE('3/4/2024', 'DD/MM/YYYY') |
|-----------------------------------|
| 2024-04-03 |
+-----------------------------------+
将日期转换为字符串,并将 日期输出格式 指定为 mon dd, yyyy。
SELECT TO_VARCHAR('2024-04-05'::DATE, 'mon dd, yyyy');
+------------------------------------------------+
| TO_VARCHAR('2024-04-05'::DATE, 'MON DD, YYYY') |
|------------------------------------------------|
| Apr 05, 2024 |
+------------------------------------------------+
转换函数中的二进制格式¶
TO_CHAR、TO_VARCHAR 和 TO_BINARY 接受可选实参,指定要解析或生成字符串的预期格式。
格式可以是以下字符串(不区分大小写):
HEX
BASE64
UTF-8
有关这些格式的更多信息,请参阅 支持的二进制格式概述。
有关这些格式的使用示例,请参阅 二进制输入和输出 的“示例”部分。