我正在尝试将毫秒时间戳插入数据库。我尝试按照以下步骤操作,但没有任何运气。
将字段值扩展为毫秒,长度为 26,小数位数为 3。
使用 StringToTimestamp(timestampInString,"%yyyy-%mm-%dd %hh:%nn:%ss.3"),输出结果为空值。
将作业属性中的默认时间戳修改为 %yyyy-%mm-%dd %hh:%nn:%ss.3
设计:
顺序文件 --> TX --> 目的地(SQL/Seq 文件)
您能帮忙解决这个问题吗?
到目前为止,您尝试的内容看起来不错,但有一个例外:
length 26 and scale 3
以 Db2 为例,您需要指定长度 26 精度 6。 26 和 3 不适合
%yyyy-%mm-%dd %hh:%nn:%ss
的长度为 20
指定微秒是扩展属性也是必要的。
尝试一下,如果仍有问题,请提供目标系统的更多详细信息
在变压器阶段尝试以下命令并根据要求设置目标数据类型,它将给出所需的结果:
StringToTimestamp(Columnname,"%yyyy-%mm-%dd %hh:%nn:%ss.3")
最重要的是用您已经完成的预期格式 (%yyyy-%mm-%dd %hh:%nn:%ss.3) 覆盖作业中的默认 NLS 设置。
现在,对于未显示的微秒部分,您可以为所使用的目标阶段中的字段启用微秒扩展属性。
您也可以参考 IBM 的这个链接,它解释了类似的场景