使用错误处理将整数转换为雪花中的日期
Posted
技术标签:
【中文标题】使用错误处理将整数转换为雪花中的日期【英文标题】:Convert Integer to Date in Snowflake using Error Handling 【发布时间】:2020-07-30 15:17:16 【问题描述】:我有一个要求,将整数值转换为 Snowflake 中的日期类型。最初我使用以下查询来获得所需的结果:
选择 TO_DATE(TO_varchar(19000000+1200034),'YYYYMMDD') 2019-07-09
现在,当我对输入使用相同的查询 - “20200034”时,我收到以下错误:
选择 TO_DATE(TO_varchar(19000000+1200034),'YYYYMMDD')
无法将“20200034”解析为格式为“YYYYMMDD”的日期
“20200034”实际上来自雪花表中的一列。为了解决这个问题,我尝试使用“TRY_TO_DATE”函数,但“TRY_TO_DATE”函数的输出结果不正确。请在下面找到详细信息:
选择 TRY_TO_DATE(TO_varchar(19000000+1200034))
1970-08-22
根据 Snowflake 文档,错误处理函数不支持 TO_DATE 、 DATE 支持的可选格式参数。 https://docs.snowflake.com/en/sql-reference/functions/try_to_date.html
【问题讨论】:
TRY_TO_DATE with pattern? - 现在支持TRY_TO_DATE(...., <pattern>)
【参考方案1】:
您可以在调用 TRY_TO_DATE 函数之前为会话设置 DATE_INPUT_FORMAT。
【讨论】:
我的主要目标是在无法解析输入值时返回默认日期值。我正在尝试使用合并函数解决此问题。例如 COALESCE(TO_DATE(TO_VARCHAR(19000000 +我建议您联系 Snowflake 支持并要求他们使用格式字符串启用 try_to_date - 它可用但需要手动启用。
但是您必须注意,“20200034”上的 TRY_TO_DATE 将被解析为 NULL。
【讨论】:
我想使用合并操作来处理这种情况,因为这个函数需要应用于雪花表的列值。例如 COALESCE(TRY_TO_DATE(TO_VARCHAR(19000000 +以上是关于使用错误处理将整数转换为雪花中的日期的主要内容,如果未能解决你的问题,请参考以下文章
将 Avro 中存储为整数(自 1970 年 1 月 1 日以来的天数)的“日期”转换为雪花“日期”类型