SSIS将数字转换为日期时间

时间:2013-12-06 15:27:59

标签: sql sql-server datetime ssis numeric

我正在尝试使用以下定义的格式转换数字列:DDMMYYYY 到mssql数据库中的日期时间。

我尝试使用“派生列”来执行此操作。

我的想法是将年,月和日部分作为字符串,将它们连接起来并使用以下代码将它们转换为DT_DBTIMESTAMP:

(DT_DBTIMESTAMP)(SUBSTRING((DT_WSTR,8)[field],5,4) + "-" + SUBSTRING((DT_WSTR,8)[field],3,2) + "-" + SUBSTRING((DT_WSTR,8)[field],1,2))

我也尝试用DT_DBDATE来做,但它也没有用。

我的表格列如下:[GebDat] datetime

你知道我怎么能达到这个结果吗? 或者也许给我一个提示,我在上述方法中做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:1)

我最初的问题中的代码实际上是正确的。

但安德鲁建议说,有些值无法正确转换,绝对正确。我们有一些不符合规范的值(例如数字值4012012而不是04012012导致SSIS尝试将40-12-012转换为日期,显然失败了。

我现在要做的是首先检查输入参数的长度。 如果它是8然后完成问题中的代码,如果它是7然后在当天添加0并相应地得到日,月,年:

LEN((DT_WSTR,8)[field]) == 7 ? (DT_DBTIMESTAMP)(SUBSTRING((DT_WSTR,8)[field],4,4) + "-" + SUBSTRING((DT_WSTR,8)[field],2,2) + "-0" + SUBSTRING((DT_WSTR,8)[field],1,1)) : (DT_DBTIMESTAMP)(SUBSTRING((DT_WSTR,8)[field],5,4) + "-" + SUBSTRING((DT_WSTR,8)[field],3,2) + "-" + SUBSTRING((DT_WSTR,8)[field],1,2))

感谢安德鲁,感谢您的提示!它引导我走上正确的道路: - )