1

我正在使用 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"
4

1 回答 1

2

SSIS 表达式语言不是 TSQL。您可能会问为什么不能将 Motorola 68k 汇编代码粘贴到 R 编译器中?DT_STR 是一种集成服务数据类型。近似的SQL Server 数据类型是 varchar(N)。

如果您的问题是如何验证您的表达式是否正确,请将它们分配给一个变量,然后您可以在包执行期间通过设置断点然后查看 Locals 窗口来检查它们。您在开发期间使用的变量窗口不会包含运行时值。任务属性中构建的复杂表达式对于故障排除来说是一场噩梦,因为没有提供检查的设施。

最后,您上面的代码将长度 4 分配给长度永远不会是 4 个空格的实体:月和日。

于 2013-08-14T01:30:56.337 回答