转换函数¶
此系列函数可用于将任何 Snowflake 数据类型的表达式转换为另一种数据类型。
本主题内容:
函数列表¶
子类别 |
函数 |
备注 |
---|---|---|
任何数据类型 |
||
CAST 的错误处理版本。 |
||
文本/字符/二进制数据类型 |
||
TO_BINARY 的错误处理版本。 |
||
数值数据类型 |
||
TO_DECIMAL、TO_NUMBER 等的错误处理版本。 |
||
TO_DOUBLE 的错误处理版本。 |
||
布尔数据类型 |
||
TO_BOOLEAN 的错误处理版本。 |
||
日期和时间数据类型 |
||
TO_DATE 的错误处理版本。 |
||
TO_TIME 的错误处理版本。 |
||
TO_TIMESTAMP 等的错误处理版本。 |
||
半结构化数据类型 |
||
地理空间数据类型 |
||
TO_GEOGRAPHY 的错误处理版本 |
||
TO_GEOMETRY 的错误处理版本 |
||
错误处理转换函数¶
带有 TRY_ 前缀的转换函数是其各自转换函数的特殊版本。当无法执行转换时,这些函数返回 NULL 值,而不是引发错误:
这些函数仅支持字符串表达式(即 VARCHAR 或 CHAR 数据类型)作为输入。
重要
这些错误处理转换函数针对转换错误相对不常见的情况进行了优化:
如果没有(或很少)错误,则这些函数应该不会对性能产生明显影响。
如果转换失败次数很多,则使用这些函数可能会导致性能明显降低。此外,将它们与 VARIANT 类型结合使用时,某些操作可能会导致性能降低。
转换函数中的数字格式¶
函数 TO_DECIMAL、TO_NUMBER、TO_NUMERIC 和 TO_DOUBLE 接受可选参数,指定输入字符串的格式(如果输入表达式的计算结果为字符串)。有关此参数可以具有的值的更多信息,请参阅 SQL 格式模型。
转换函数中的日期和时间格式¶
以下函数允许您指定预期的日期、时间或时间戳格式,以解析或生成字符串:
您可以在可选实参中指定格式,使用以下不区分大小写的元素来描述格式:
格式元素 |
描述 |
---|---|
|
四位数年份。 |
|
两位数年份,由 TWO_DIGIT_CENTURY_START 会话参数控制,例如,当设置为 |
|
两位数月份( |
|
月份名称的全称或缩写。 |
|
月份名称的全称。 |
|
月份的两位数天数( |
|
星期的缩写。 |
|
两位数小时( |
|
两位数小时( |
|
上午 ( |
|
两位数分钟( |
|
两位数秒钟( |
|
精度为 ``0``(秒)至 ``9``(纳秒)的小数秒,例如 |
|
时区小时和分钟,从 UTC 开始偏移。可以用 |
|
四位数年份,格式为 ISO (link removed),负数为 BCE 年份。 |
备注
当使用仅日期格式时,关联时间假定为当天的午夜。
格式中双引号之间或上述元素以外的任何内容都会被解析/格式化,但不会被解释。
有关有效范围、位数和最佳实践的更多详细信息,请参阅 有关使用日期、时间和时间戳格式的其他信息。
使用说明¶
格式中双引号之间或上述元素以外的任何内容都会被解析/格式化,但不会被解释。
示例¶
使用指定的 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
有关这些格式的更多信息,请参阅 支持的二进制格式概述。
有关这些格式的使用示例,请参阅 二进制输入和输出 的“示例”部分。