我需要将 varchar 转换为日期。
我的 varchar 看起来像这样:
事件日期 |
---|
2020-09-20 |
2021-07-21 |
2021-01-20 |
2020-10-08 |
这是我尝试的解决方案:
SELECT
TO_DATE(event_date,'YYYY-MM-DD')
FROM
database.schema.table
这是我得到的错误:
Can't parse ' ' as date with format 'yyyy-mm-dd'
有人可以帮我吗?谢谢!
答案 0 :(得分:1)
您可以使用 try_to_date(event_date,'YYYY-MM-DD'),如果 event_date 无法解析,它将返回 NULL(不会失败),您可以过滤并检查它究竟包含什么:
SELECT
event_date as varchar_date,
TRY_TO_DATE(event_date,'YYYY-MM-DD') as parsed_date
FROM
database.schema.table
WHERE TRY_TO_DATE(event_date,'YYYY-MM-DD') IS NULL --filter and check
检查你有哪些格式后,你可以使用coalesce解析不同的格式:
coalesce(TRY_TO_DATE(event_date,'YYYY-MM-DD'),
TRY_TO_DATE(event_date,'YYYYMMDD')
)
答案 1 :(得分:1)
答案是用于 varchar 周围额外空格的 trim() 函数。谢谢大家!