Informatica Cloud表达式转换:UTC字符串转DateTime报错求助
问题分析与解决
错误原因
你的转换失败有两个核心问题:
- 格式字符串不匹配:你调用
TO_DATE时用的格式是'MM/DD/YYYY HH24:MI:SS',这个格式要求日期是「月/日/年」的结构,但你处理后的字符串是「年-月-日」(2016-05-12...),格式完全对应不上,函数自然无法解析。 - 未处理毫秒部分:你的目标字符串包含毫秒(
.29),但格式字符串里没有对应的占位符,也会导致解析失败。
正确的格式字符串
针对你处理后的2016-05-12 21:19:51.294这种格式,需要用对应的格式字符串:'YYYY-MM-DD HH24:MI:SS.FF3',其中:
YYYY:4位年份MM:2位月份DD:2位日期HH24:24小时制的小时MI:分钟SS:秒FF3:保留3位毫秒
两种可行的转换方案
方案1:直接解析原始UTC字符串(更简洁)
原始字符串是标准ISO8601格式(2016-05-12T21:19:51.2946214Z),可以直接用对应格式解析,不需要先替换字符:
TO_DATE('2016-05-12T21:19:51.2946214Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF7"Z"')
如果需要保留3位毫秒,可以再做截断处理:
TO_DATE(SUBSTR('2016-05-12T21:19:51.2946214Z', 1, 23), 'YYYY-MM-DD"T"HH24:MI:SS.FF3')
方案2:优化你原有的替换思路
先把T替换成空格,去掉Z,截取到3位毫秒,再用正确格式转换:
TO_DATE(SUBSTR(REPLACE(REPLACE('2016-05-12T21:19:51.2946214Z', 'T', ' '), 'Z', ''), 1, 23), 'YYYY-MM-DD HH24:MI:SS.FF3')
内容的提问来源于stack exchange,提问作者Lan
相关产品推荐
相关产品推荐

