【发布时间】:2014-04-09 15:45:20
【问题描述】:
我正在努力将一些使用 ActiveX VBScript 转换的旧 dts 包转换为 SSIS 包。输入是 YYYYMMDD 格式的 8 个字符的字符串。如果可能,转换会将其转换为日期。如果不是,则该值应为 NULL。
这是dts代码
TheYear = Mid(DTSSource("SHIP_DATE"),1,4)
TheMonth = Mid(DTSSource("SHIP_DATE"),5,2)
TheDay = Mid(DTSSource("SHIP_DATE"),7,2)
TheDate = TheMonth &"/"&TheDay&"/"&TheYear
If IsDate(TheDate) Then
DTSDestination("SHIP_DATE") = TheDate
End If
这是我为 SSIS 转换所做的事情
Dim TheYear As String
Dim TheMonth As String
Dim TheDay As String
Dim TheDate As String
If Row.SHIPDATE.Length >= 8 Then
TheYear = Row.SHIPDATE.Substring(0, 4)
TheMonth = Row.SHIPDATE.Substring(4, 2)
TheDay = Row.SHIPDATE.Substring(6, 2)
TheDate = TheMonth & "/" & TheDay & "/" & TheYear
If IsDate(TheDate) Then
Row.OutShipDate = TheDate
Else
Row.OutShipDate = Nothing
End If
Else
Row.OutShipDate = Nothing
End If
我尝试将 OutShipDate 格式化为日期和数据库日期。对于无效的日期输入字符串,例如“00000000”,根据 OutShipDate 的数据类型,我在数据库列中得到 1899-12-30 或 0001-01-01。如果我没有将 Row.OutShipDate 设置为 VBScript 中的任何内容,则 SSIS 执行将完全失败。
我可以从 VBScript 转换中输出空值吗?
【问题讨论】:
标签: sql sql-server vb.net vbscript ssis