【问题标题】:SSIS derived column error (cast type)SSIS 派生列错误(强制转换类型)
【发布时间】:2018-06-15 19:14:10
【问题描述】:

我正在尝试对 2 列求和(调整到期日和到期日):

DATEADD("dd",(DT_I4)AdjustmentDueDayCode,ExpirationDate)

我不断收到以下错误消息:

An error occurred while attempting to perform a type cast
SSIS Error Code `DTS_E_INDUCEDTRANSFORMFAILUREONERROR*`

我认为可能是因为空值所以写了以下内容:

(DT_I4)AdjustmentDueDayCode > 0 ? (DATEADD("dd",

(DT_I4)AdjustmentDueDayCode,ExpirationDate) : "null"

但还是出现同样的错误,有什么建议吗?

【问题讨论】:

  • 嗨,Rachel,我可以提供几个您的数据行示例,以查看您的数据在表格中的样子吗?
  • @Ryan 当然,ExpirationDate : 1999-11-15 (date) AdjustmentDueDaycode : 90 (varchar(3))
  • DateAdd("dd", 90, ExpirationDate) 有效吗? (DT_I4)AdjustmentDueDayCode 怎么样?最后,DATEADD("dd",((DT_I4)AdjustmentDueDayCode),ExpirationDate) 有效吗?
  • (DT_I4)AdjustmentDueDayCode 不起作用并且 DateAdd("dd", 90, ExpirationDate) 起作用,所以我猜问题是转换 Adjust.duedate

标签: ssis casting derived-column


【解决方案1】:

AdjustmentDueDaycode需要变成BIGINT类型。

IE) DATEADD("dd", CONVERT(BIGINT, (DT_I4)AdjustmentDueDaycode),ExpirationDate)

【讨论】:

  • 它不允许我更改该列的数据类型,给我错误:由于潜在的数据丢失,无法转换该值
  • 由于 DT_I4 数据类型,我将示例更改为在转换中使用 BIGINT 而不是 INT。我希望它对你有用!
猜你喜欢
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2015-05-29
  • 2011-07-15
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多