我有一个逗号分隔的文本文件,我使用 SSIS 包将其导入到 SQL Server 2008 中。作为包的一部分,我有一个派生列作为文本文件的一部分是结束日期。我遇到的问题是,如果文本文件没有结束日期00000000而不是真实日期,例如20130207. 在我的派生列编辑器中,我有以下表达式,它适用于不全为零的日期。
(DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供有关如何最好地处理零的解决方案或帮助吗?
小智 5
派生列转换试图将值转换为00000000date 00-00-0000,这不被视为有效的日期值。
如果您的数据库列定义为NULL,这意味着它可以接受NULL值,请Derived Column按如下方式更改转换中的表达式:
[Column 20] == "00000000" ? NULL(DT_DATE) : (DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))
Run Code Online (Sandbox Code Playgroud)
如果您的数据库列定义为NOT NULL,这意味着它不能接受NULL值,请Derived Column按如下方式更改转换中的表达式:
[Column 20] == "00000000" ? (DT_DATE) "1900-01-01" : (DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))
Run Code Online (Sandbox Code Playgroud)