我的表达如下:
DATEDIFF("dd",(DT_DATE)(SUBSTRING(@[User::strExcelFileName],15,2) + "-" + SUBSTRING(@[User::strExcelFileName],18,2) + "-" + SUBSTRING(@[User::strExcelFileName],21,4)),GETDATE()) > @[User::intDaysCount]
我的档案:TempConfigPr_06172013.xlsx
问题在于从“DT_WSTR”转换为数据类型“DT_DATE”时出现错误...有任何人请帮助,我出错了,如何解决这个问题?
注意:我查了一下,这个表达式工作正常。
DATEDIFF("dd",(DT_DATE)("11-18-2010"),GETDATE()) > @[User::intDaysCount]
答案 0 :(得分:2)
在SSIS中编辑表达式可能很痛苦。我发现当它们没有按预期工作时,最好将它们分成多个变量并让它们互相补充。
通过这样做,我很快确定你的根问题是这个表达式没有生成有效的日期值。它生成了61-20-3.xl
SUBSTRING(@[User::strExcelFileName],15,2) + "-"
+ SUBSTRING(@[User::strExcelFileName],18,2) + "-"
+ SUBSTRING(@[User::strExcelFileName],21,4)
我创建了一个类型为string的变量strExcelFileDate
,我使用该表达式创建了一个字符串,该字符串是下划线后面的8个字符。
SUBSTRING(@[User::strExcelFileName], FINDSTRING(@[User::strExcelFileName], "_", 1)+1, 8)
该字符串值06172013
不能直接转换为日期,这很可惜。我需要将该字符串切片并切成可以转换为日期数据类型的内容。创建了一个名为dtExcelFileDate的新变量,其类型为DateTime。我在其上使用了一个表达式将字符串转换为yyyy-mm-dd,然后将整个事物转换为DT_DATE数据类型。
(DT_DATE) (RIGHT(@[User::strExcelFileDate], 4) + "-"
+ SUBSTRING(@[User::strExcelFileDate], 1,2)
+ "-" + RIGHT(SUBSTRING(@[User::strExcelFileDate],1,4), 2))