我正在尝试使用以下定义的格式转换数字列: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
你知道我怎么能达到这个结果吗? 或者也许给我一个提示,我在上述方法中做错了什么?
提前致谢
答案 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))
感谢安德鲁,感谢您的提示!它引导我走上正确的道路: - )