【问题标题】:Convert yymmdd to datetime using ssis derived column使用 ssis 派生列将 yymmdd 转换为日期时间
【发布时间】:2014-08-19 21:07:13
【问题描述】:

以下是表示出生日期 (yymmdd) 的字符串。我想将其转换为日期时间格式并使用 ssis 加载到数据库中。我该怎么做?在我的派生列中,我有 (DT_DATE)(SUBSTRING([Drv DOB],1,2) + "-" + SUBSTRING([Drv DOB],3,2) + "-" + SUBSTRING([Drv DOB],5 ,2)),但它不起作用。

我收到这些错误:

  1. [派生列 [2]] 错误:尝试执行类型转换时出错。
  2. [派生列 [2]] 错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “派生列”失败,因为发生错误代码 0xC0049064,并且“派生列.输入 [派生列输入].列 [驱动 DOB]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

•470324 •470324 •470209 •101 •0

【问题讨论】:

    标签: ssis type-conversion string-to-datetime


    【解决方案1】:

    YEAR 有 4 位数字而不是 2,所以应该是:

    (DT_DATE)("20" + SUBSTRING([Drv DOB],1,2) + "-" + 
                     SUBSTRING([Drv DOB],3,2) + "-" + 
                     SUBSTRING([Drv DOB],5,2))
    

    【讨论】:

    • OK : (DT_DATE)(SUBSTRING("20" + [Drv DOB],1,2) + SUBSTRING([Drv DOB],3,2) + SUBSTRING([Drv DOB] ,5,2)) [派生列 [2]] ........我收到此错误错误:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “派生列”失败,因为发生错误代码 0xC0049064,并且“派生列.输入 [派生列输入].列 [驱动 DOB]”上的错误行处置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
    • 这行得通....................................... ............. ([Drv DOB] == "0") || ([Drv DOB] == "101") ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([Drv DOB],1,2) + "-" + SUBSTRING([Drv DOB],3,2) + "-" + SUBSTRING([Drv DOB],5, 2))
    【解决方案2】:

    这对我有用!谢谢大家

    ([Drv DOB] == "0") || ([Drv DOB] == "101") ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([Drv DOB],1,2) + "-" + SUBSTRING([Drv DOB],3,2) + "-" + SUBSTRING([Drv DOB],5,2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多