为什么这个SSIS表达式在我的服务器上评估到10小时前

时间:2014-08-12 23:59:58

标签: sql datetime ssis

所有

我在不知道时区等方面很糟糕。

任何人都可以帮助我理解为什么:

  

@ [$ Package :: ExportFileLocation] + REPLACE(   @ [$ Package :: ExportFileName] +" _" + SUBSTRING(REPLACE((DT_STR,50,   1250)GETDATE(),":",""),1,10)," "," _")+"。" +   @ [$包:: ExportFileExtension]

产生

  

C:\用户\ russellm \桌面\ PWCCurrentCodeExtract_2014-08-13.TXT

在我的本地和这个:

  

C:\用户\ russellm \桌面\ PWCCurrentCodeExtract_2014-08-12.TXT

在服务器上。

所有服务器日期和时区都没有问题。

这是完整的SSIS表达。

感谢 拉斯

1 个答案:

答案 0 :(得分:0)

SQL Server 2008+(之前不确定)从Windows获取当前日期/时间,因此如果您说服务器和PC具有相同的时间和区域设置,那么您的SQL Server排序可能会有所不同。这可能意味着使用Code Page 1250转换日期会产生不同的效果。

此页面显示哪个CodePage应与特定的排序规则一起使用

http://technet.microsoft.com/en-us/library/ms186356%28v=sql.105%29.aspx

仅供参考,我发现的大多数示例都使用CP1252,因此您可能需要尝试使用

@[$Package::ExportFileLocation] + REPLACE( @[$Package::ExportFileName] + "_" + SUBSTRING(REPLACE( (DT_STR, 50, 1252) GETDATE() , ":", "") , 1, 10) , " ", "_") + "."+ @[$Package::ExportFileExtension]

看看是否有所作为。