Snowflake数值列转日期列执行UPDATE报TO_DATE类型错误
报错根因
两个问题导致SQL执行失败:
TO_DATE函数接收的第一个参数应为字符串类型,直接传入整数类型的VALUATION DATE NUM字段会触发类型不匹配的编译错误- 使用的格式掩码
'YYYY/MM/DD'和字段实际存储的20210331无分隔符格式不符,即使修正类型问题也无法正确解析日期
修正方案
先将整数字段转为字符串,再使用匹配8位无分隔符日期的格式掩码YYYYMMDD做日期转换,正确的更新语句如下:
UPDATE SPRD_MGMT_INP_FUND_VALUES SET "VALUATION DATE" = TO_DATE(TO_CHAR("VALUATION DATE NUM"), 'YYYYMMDD');
前置校验建议
正式执行更新前,可先运行以下查询确认转换结果符合预期,避免产生脏数据:
SELECT "VALUATION DATE NUM", TO_DATE(TO_CHAR("VALUATION DATE NUM"), 'YYYYMMDD') AS converted_valuation_date FROM SPRD_MGMT_INP_FUND_VALUES LIMIT 20;
确认返回的日期值(如整数值20210331对应解析结果为2021-03-31)无误后,再执行更新操作即可。
内容的提问来源于stack exchange,提问作者Karab
相关产品推荐
相关产品推荐

