使用try()
. 通常date_parse()
在错误的日期格式上失败。如果添加try()
,它将NULL
为错误的日期生成 s,您可以像这样过滤 NULL 记录:
select try(date_parse(t.up_date, '%c/%e/%Y %l:%i:%s %p'))
from table t
--filter rows wich can not be parsed if necessary
where try(date_parse(t.up_date, '%c/%e/%Y %l:%i:%s %p')) is not NULL
您也可以尝试使用 coalesce() 解析不同的格式以选择成功解析:
select
coalesce( try(date_parse(t.up_date, '%c/%e/%Y %l:%i:%s %p')), --try format1
try(date_parse(t.up_date, '%Y/%m/%d')) --try format2
)
from table t
where --filter only parsed dates
coalesce( try(date_parse(t.up_date, '%c/%e/%Y %l:%i:%s %p')), --try format1
try(date_parse(t.up_date, '%Y/%m/%d')) --try format2
) is not NULL;
通过这种方式,您可以尝试解析数据中可能存在的不同格式。