You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

to_date函数日期格式错误排查请求——附关联查询SQL语句

解决to_date函数的日期格式匹配错误

嘿,我一眼就发现问题所在了——你的to_date函数里的格式掩码和实际截取的字符串完全不匹配,这才导致了格式错误!

错误原因分析

你用substr("SCC_STG_DIM_OVERWRITE_FNL"."TERM_END_DT", 1, 19)截取了字段的前19位,这部分内容的格式应该是yyyy.mm.dd hh24:mi:ss(比如2024.05.20 14:30:45),但你给to_date的格式掩码却写了'yyyy.mm.dd hh24:mi:ss.aaaaaaaaa',多出来的.aaaaaaaaa部分在截取后的字符串里根本不存在,数据库自然无法解析这个格式。

修正后的查询

把格式掩码改成和截取内容完全匹配的版本就行:

SELECT to_date(substr("SCC_STG_DIM_OVERWRITE_FNL"."TERM_END_DT", 1, 19), 'yyyy.mm.dd hh24:mi:ss') 
FROM ("EDMWHS"."SERVICE_CONTRACT" "SERVICE_CONTRACT" 
INNER JOIN "EDMSTG"."STG_SERVICE_CONTR_DELTA" "STG_SERVICE_CONTR_DELTA" 
ON ("STG_SERVICE_CONTR_DELTA"."CRM_ORDER_OBJECT_GUID" = "SERVICE_CONTRACT"."CRM_ORDER_OBJECT_GUID")) 
INNER JOIN "EDMSTG"."SCC_STG_DIM_OVERWRITE_FNL" "SCC_STG_DIM_OVERWRITE_FNL" 
ON ("SCC_STG_DIM_OVERWRITE_FNL"."CRM_ORDER_OBJECT_GUID" = ...) -- 补全你的连接条件

额外优化提示

如果TERM_END_DT本身就是日期类型或者时间戳类型,其实完全不需要用substrto_date来转换,直接使用字段本身即可,这样既能避免格式错误,又能提升查询效率。

内容的提问来源于stack exchange,提问作者Pratik Fouzdar

火山引擎 最新活动