Databricks SQL中特定格式字符串转Timestamp报错,求内置解析方案
在Databricks SQL中直接解析非标准日期字符串为Timestamp
默认的cast(my_value as timestamp)无法解析4/24/2020 14:43:54或12/5/2020 14:43:54这类格式的字符串,原因是Databricks SQL默认的timestamp解析规则遵循ISO标准或特定默认格式,不支持单数字月/日的M/d/yyyy HH:mm:ss格式,因此会抛出CAST_INVALID_INPUT错误。
你不需要通过字符串处理或正则表达式来解决,Databricks SQL提供了直接解析这类字符串的方法:使用to_timestamp函数并显式指定日期格式。
具体用法
to_timestamp函数支持自定义日期格式字符串,其中:
M匹配1位或2位的月份(比如4或12)d匹配1位或2位的日期(比如5或24)HH:mm:ss匹配24小时制的时分秒
示例SQL语句:
-- 解析单月/单日格式 SELECT to_timestamp('4/24/2020 14:43:54', 'M/d/yyyy HH:mm:ss') AS parsed_ts; SELECT to_timestamp('12/5/2020 14:43:54', 'M/d/yyyy HH:mm:ss') AS parsed_ts;
容错处理
如果存在格式不规范的字符串,不想因为解析失败导致整个查询报错,可以使用try_to_timestamp函数,它会对解析失败的返回NULL:
SELECT try_to_timestamp('invalid-date', 'M/d/yyyy HH:mm:ss') AS parsed_ts; -- 返回 NULL
内容的提问来源于stack exchange,提问作者alxsbn
相关产品推荐
相关产品推荐

