1

我希望你能在这方面帮助我!我真的很感谢这里的帮助!

我要做的是创建 SSIS 包以将 .TXT 分隔文件导入数据库。使用静态文件执行此操作的过程在我的脑海中很清楚,但这里的事情是必须使用昨天的文件来完成导入,每天。文件名具有以下结构:“Informe_De_Recupero_D141027”(日期部分为“141027”)。

我在 SSIS 包上创建了一个名为 FileDateName 的变量,其表达式如下:

RIGHT( "00" + (DT_STR, 4 , 1252)DATEPART( "year" , GETDATE() ),2) + "" 
+ RIGHT( "00" + (DT_STR, 2 , 1252)DATEPART( "month" , GETDATE() ) , 2 ) 
+ "" + (DT_STR, 2 , 1252) DATEPART( "day" , getdate()-1) 

但是 -1 在这种情况下不起作用。它会导致以下错误:

数据类型“DT_DBTIMESTAMP”不能与二元运算符“-”一起使用,该操作不支持其中一个或两个操作数的类型。要执行此操作,需要使用强制转换运算符显式强制转换一个或两个操作数。

尝试设置二进制操作“Getdate()-1”的结果类型失败,错误代码为 0xc0047081 评估函数“DATEPART”失败,错误代码为 0xc0047084

我该如何解决?你能不能给我另一个解决方案,也许?

提前致谢!!

4

1 回答 1

1

SSIS 表达式语言不支持 getdate()-1。您将不得不使用 DATEADD(),即

+ (DT_STR, 2 , 1252) DATEPART( "day" , Dateadd("day",-1,getdate())) 

此外,这应该为每个日期部分完成。当您到达年初 - 141231 时会发生什么,将转换为 150131。

最后,在执行 SQL 任务中执行此操作会更容易:

Select Right(Convert(char(8), getdate()-1,112),6)
于 2014-10-28T15:55:28.877 回答