适用于:
Databricks Runtime 18.1 及更高版本
如果 expr 字符串是字符串,则根据给定格式列表中的第一个 TIMESTAMP 匹配模式分析它,或者如果没有模式匹配,则 NULL 返回。 如果 expr 为数值类型,请将其分析为 Unix 时间戳。 无效或不匹配 expr 返回, NULL 而不是引发错误。
Syntax
try_parse_timestamp(expr [, { pattern [...] } ])
Arguments
-
expr:要分析为的
TIMESTAMP字符串或数值。 接受的类型包括:-
TINYINT、SMALLINT、INT、BIGINT -
FLOAT、DOUBLE -
DECIMAL(最高 18 精度) STRING
-
-
pattern:时间戳模式的可选列表或对预定义列表的引用,例如
#iso8601或#rfc3339。 时间戳模式必须是 常量字符串。 如果未指定模式,则等效于指定#extended。 有关模式符号引用和预定义模式列表的列表,请参阅函数中的parse_timestamp模式引用。
退货
答 TIMESTAMP,或者 NULL 无法 expr 分析。
expr如果为字符串且无模式匹配,则函数返回 NULL。
expr如果为数字,并且无法解释为有效的 Unix 时间戳(例如溢出),则函数返回NULL。
如果格式参数格式不正确(模式无效或未知模式列表),该函数仍会引发错误;仅分析值返回NULL的expr失败。
如果 expr 为 NULL,则函数返回 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