类别:

转换函数日期和时间函数

TRY_TO_DATE

TO_DATE 函数的特殊版本,它执行相同的操作(即将输入表达式转换为日期),但支持错误处理(即,如果无法执行转换,它将返回 NULL 值而不是引发错误)。

有关更多信息,请参阅 错误处理转换函数

另请参阅:

TO_DATE、DATE

语法

TRY_TO_DATE( <string_expr> [, <format> ] )
TRY_TO_DATE( '<integer>' )
Copy

实参

必填:

其中之一:

string_expr

要从中提取日期的字符串,例如 '2024-01-31'

'integer'

计算结果为包含整型的字符串的表达式。例如:'15000000'。根据字符串的大小,可以解释为秒、毫秒、微秒或纳秒。详情请参阅此函数的 使用说明

备注

不建议使用带引号的整数作为输入内容。

可选:

format

string_exprAUTO 的日期格式说明符,用于指定 Snowflake 应自动检测要使用的格式。有关更多信息,请参阅 转换函数中的日期和时间格式

默认值为 DATE_INPUT_FORMAT 会话参数的当前值(默认为 AUTO)。

返回

返回值的数据类型是 DATE。

使用说明

  • 输出中日期的显示格式由 DATE_OUTPUT_FORMAT 会话参数(默认为 YYYY-MM-DD)确定。

  • 如果输入参数的格式是包含整数的字符串:

    • 将字符串转换为整数后,该整数被视为自 Unix 纪元时间 (1970-01-01 00:00:00.000000000 UTC) 开始后的秒数、毫秒数、微秒数或纳秒数。

      • 如果整数小于 31536000000(一年中的毫秒数),则该值被视为秒数。

      • 如果该值大于或等于 31536000000 且小于 31536000000000,则该值被视为毫秒数。

      • 如果该值大于或等于 31536000000000 且小于 31536000000000000,则该值被视为微秒数。

      • 如果该值大于或等于 31536000000000000,则该值被视为纳秒数。

      备注

      弃用警告:未来版本的 Snowflake 可能会自动将字符串化的整数值解释为秒数,而不是毫秒数、微秒数或纳秒数。Snowflake 建议您仅在打算将整数解释为秒数时,才使用包含整数的字符串调用 TO_DATE、TO_TIME 或 TO_TIMESTAMP。

    • 如果评估多行(例如,如果输入内容是包含多行的表的列名),则每个值都将单独得到检查,以确定该值表示的是秒数、毫秒数、微秒数还是纳秒数。

示例

下面的示例使用 TRY_TO_DATE 函数:

SELECT 
  TRY_TO_DATE('2024-05-10') AS valid_date, 
  TRY_TO_DATE('Invalid') AS invalid_date;
Copy
+------------+--------------+
| VALID_DATE | INVALID_DATE |
|------------+--------------|
| 2024-05-10 | NULL         |
+------------+--------------+

有关将输入表达式转换为日期的示例,请参阅 TO_DATE、DATE

语言: 中文