【问题标题】:Datastage: String to Timestamp to milli seconds conversionDatastage:字符串到时间戳到毫秒的转换
【发布时间】:2018-09-02 19:12:24
【问题描述】:

我正在尝试将毫秒的时间戳插入数据库。我尝试了以下步骤,但没有任何运气。

  • 将字段值扩展到毫秒,长度为 26,刻度为 3。

  • Used StringToTimestamp(timestampInString,"%yyyy-%mm-%dd %hh:%nn:%ss.3"),在输出中产生空值。

  • 将作业属性中的默认时间戳修改为 %yyyy-%mm-%dd %hh:%nn:%ss.3

设计:

顺序文件 --> TX --> 目标(SQL/Seq 文件)

您能帮忙解决这个问题吗?

【问题讨论】:

  • 请提供一些代码
  • StringToTimestamp(timestampInString,"%yyyy-%mm-%dd %hh:%nn:%ss.3") 用于阴天类型..

标签: string timestamp milliseconds datastage


【解决方案1】:

到目前为止,您的尝试看起来不错,但有一个例外:

length 26 and scale 3

以使用 Db2 为例,您需要指定长度 26 精度 6。 26 和 3 不适合

%yyyy-%mm-%dd %hh:%nn:%ss 的长度为 20

指定 microsenonds 是扩展属性也是必要的。

如果仍有问题,请尝试提供目标系统的更多详细信息

【讨论】:

  • 我尝试将目标作为 SQL 和顺序文件,但结果是 .000 而不是值。
  • 您是否在表定义中指定了数据类型和长度之间的微秒?这非常重要,需要在从源到目标的整个过程中完成。
【解决方案2】:

在transformer阶段尝试以下命令并根据要求设置目标数据类型,它将给出所需的结果:

StringToTimestamp(Columnname,"%yyyy-%mm-%dd %hh:%nn:%ss.3")

【讨论】:

    【解决方案3】:

    最重要的是用您已经完成的预期格式 (%yyyy-%mm-%dd %hh:%nn:%ss.3) 覆盖作业中的默认 NLS 设置。

    现在,对于未显示的微秒部分,您可以为使用的目标阶段中的字段启用微秒扩展属性。

    您也可以参考 IBM 的 link,它解释了类似的场景

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多