在雪花中将 VARCHAR 转换为 DATE

时间:2021-04-27 14:33:14

标签: sql date snowflake-cloud-data-platform

我需要将 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'

有人可以帮我吗?谢谢!

2 个答案:

答案 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() 函数。谢谢大家!

相关问题