如何解决SSIS DT_STR 到 DT_DBDATE 使用派生列 其他有用的答案:
我有一个固定格式的 .txt 文件,其中有一个日期字段。此字段可能有日期或为空。我绞尽脑汁想让这个字段在派生列转换中从 DT_STR
转换为 DT_DBDATE
。我尝试了多种场景:
[CHNG_DT] == "" ? ISNULL((DT_DBDATE)[CHNG_DT] ) : (DT_DBDATE)SUBSTRING([CHNG_DT],1,4)) + "-" + (DB_DBDATE)(SUBSTRING(CHNG_DT],6,2)) + "-" + (DB_DBDATE)(SUBSTRING([CHNG_DT],9,2))
[CHNG_DT] == "" ? NULL(DB_DBDATE) : (DB_DBDATE)[CHNG_DT]
ISNULL([CHNG_DT]) ? NULL(DT_DBDATE) : (DT_DBDATE)((DT_STR,10,1252)[CHNG_DT])
ISNULL(CHNG_DT) ? NULL(DT_DBDATE) : (DT_DBDATE)((DT_STR,1252)CHNG_DT)
LEFT([CHNG_DT],10) == " " ? ISNULL((DT_DBDATE)[CHNG_DT]) : (DT_DBDATE)[CHNG_DT]
(DT_DBDATE)CHNG_DT
解决方法
首先,当您希望将值从 DT_STR
转换为 DT_DBDATE
时,您应该确保这些值以 yyyy-MM-dd
格式存储。您可以参考以下官方文档了解更多信息:
第二个建议是使用 LTRIM()
和 RTRIM()
函数来确保日期值的开头和结尾没有空白。举个例子:
LTRIM(RTRIM(REPLACENULL([CHNG_DT],""))) == "" ? NULL(DT_DBDATE) : (DT_DBDATE)LTRIM(RTRIM([CHNG_DT]))
如果日期值以不同的格式存储,您应该在将其转换为 DT_DBDATE
之前编写一个更改格式的表达式。举个例子:
其他有用的答案:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。