我正在使用SSIS,其中我使用的代码用于解析年/月和日的文件 所以在Expression Builder中我使用:
(DT_STR,4,1252)MONTH( DATEADD( "dd", -1, getdate() )) gets the month
(DT_STR,4,1252)DAY( DATEADD( "dd", -1, getdate() )) gets the day
(DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() )) gets the year
然而,当我编码时,我也喜欢将我的代码粘贴到sql server查询窗口中,但是这个DT_STR似乎特定于SSIS?
是否有等效替换,或者为什么我不能在T-SQL中使用它?
修改
好的,我现在看到这个代码不是全部都可以移植到t-sql,也没有正确使用,月份和日期永远不会是4的长度
(DT_STR, 4, 1252) YEAR (DATEADD ( "dd", 0, getdate())) + RIGHT ("0" + LTRIM ((DT_STR, 4, 1252) MONTH (DATEADD ("dd", 0, getdate()))), 2) + RIGHT ("0" + LTRIM ((DT_STR, 4, 1252) DAY (DATEADD ("dd", -1, getdate()))), 2) + ".TXT"
答案 0 :(得分:1)
SSIS表达式语言不是TSQL。您还可以问为什么不能将Motorola 68k汇编代码粘贴到R编译器中? DT_STR是Integration Services Data Type。大约SQL Server data type将是varchar(N)。
如果您的问题是如何验证表达式是否正确,请将它们分配给变量,然后您可以在程序包执行期间通过设置断点然后查看“本地”窗口来检查它们。您在开发期间使用的“变量”窗口不会包含运行时值。在任务属性中构建的复杂表达式是一个用于故障排除的噩梦,因为没有提供检查的工具。
最后,上面的代码为长度为4个空格的实体分配长度为4个月和日。