Snowflake按指定格式解析无分隔符日期字符串时报错如何解决
报错原因
你使用的日期格式模板和输入字符串的实际结构不匹配:输入的'05272021'类字符串是无分隔符的月日年结构(MMDDYYYY),但你写的格式串'MM/dd/yyyy'中指定了/作为分隔符,解析时会按照带斜杠的规则匹配输入内容,自然无法解析成功。
解决方案
方案1(推荐,适配多数主流数据库)
直接将格式串中的分隔符删除,改为和输入结构匹配的'MMddyyyy'即可:
to_date(refund_date::varchar,'MMddyyyy') as refund_date
该方案支持PostgreSQL、Spark SQL、Flink SQL、Hive等多数常用大数据和关系型数据库。
方案2(兼容不支持无分隔符格式的旧版本数据库)
如果你的数据库版本过旧不支持直接解析无分隔符日期,可以先手动给字符串插入分隔符后再解析:
to_date( concat( left(refund_date::varchar, 2), '/', substring(refund_date::varchar, 3, 2), '/', right(refund_date::varchar, 4) ), 'MM/dd/yyyy' ) as refund_date
验证建议
你可以先执行测试语句确认转换结果符合预期:
-- 测试05112021是否转换为2021-05-11 SELECT to_date('05112021'::varchar,'MMddyyyy') AS test_refund_date;
内容的提问来源于stack exchange,提问作者JohnyEs
相关产品推荐
相关产品推荐

