try_parse_timestamp 函数

适用于:检查标记为“是”的 Databricks Runtime 18.1 及更高版本

如果 expr 字符串是字符串,则根据给定格式列表中的第一个 TIMESTAMP 匹配模式分析它,或者如果没有模式匹配,则 NULL 返回。 如果 expr 为数值类型,请将其分析为 Unix 时间戳。 无效或不匹配 expr 返回, NULL 而不是引发错误。

Syntax

try_parse_timestamp(expr [, { pattern [...] } ])

Arguments

  • expr:要分析为的 TIMESTAMP字符串或数值。 接受的类型包括:
    • TINYINTSMALLINTINTBIGINT
    • FLOATDOUBLE
    • DECIMAL (最高 18 精度)
    • STRING
  • pattern:时间戳模式的可选列表或对预定义列表的引用,例如 #iso8601#rfc3339。 时间戳模式必须是 常量字符串。 如果未指定模式,则等效于指定 #extended。 有关模式符号引用和预定义模式列表的列表,请参阅函数中的parse_timestamp模式引用

退货

TIMESTAMP,或者 NULL 无法 expr 分析。

expr如果为字符串且无模式匹配,则函数返回 NULL

expr如果为数字,并且无法解释为有效的 Unix 时间戳(例如溢出),则函数返回NULL

如果格式参数格式不正确(模式无效或未知模式列表),该函数仍会引发错误;仅分析值返回NULLexpr失败。

如果 exprNULL,则函数返回 NULL

备注

  • 如果模式列表包含 NULL 值,则忽略它们。 如果所有提供的模式都是 NULL,则结果是 NULL
  • 如果时间戳与包含无时区信息的模式匹配,则会在会话时区中对其进行分析。

错误条件

示例

-- Parse timestamp according to default pattern list
> SELECT try_parse_timestamp('2024-12-09T19:30:01');
 2024-12-09 19:30:01.000

-- Invalid date returns NULL
> SELECT try_parse_timestamp('2016-12-32');
 NULL

-- Bad input returns NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Invalid pattern still raises an error (does not return NULL)
> SELECT try_parse_timestamp('2023', 'QQQQ');
 Error: INVALID_PARAMETER_VALUE.PATTERN

-- Extend the default pattern list with custom patterns
> SELECT try_parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
 2024-12-01 00:00:00.000
 2024-12-02 00:00:00.000
 2024-12-03 00:00:00.000