【问题标题】:Why does this SSIS expression evaluate to 10 hours ago on my server为什么这个 SSIS 表达式在我的服务器上计算为 10 小时前
【发布时间】:2014-08-12 23:59:57
【问题描述】:

全部,

我在理解时区等方面很糟糕。

谁能帮我理解为什么会这样:

@[$Package::ExportFileLocation] + REPLACE( @[$Package::ExportFileName] + "_" + SUBSTRING(REPLACE( (DT_STR, 50, 第1250章 @[$Package::ExportFileExtension]

产生:

C:\Users\russellm\Desktop\PWCCurrentCodeExtract_2014-08-13.TXT

在我的本地和这个:

C:\Users\russellm\Desktop\PWCCurrentCodeExtract_2014-08-12.TXT

在服务器上。

所有服务器的日期和时区都正常。

这是完整的 SSIS 表达式。

谢谢 拉斯

【问题讨论】:

  • 完整的 SSIS 表达式在哪里?
  • 你看不到吗? @[$Package::ExportFileLocation] + REPLACE(@[$Package::ExportFileName] + "" + SUBSTRING(REPLACE((DT_STR, 50, 1250) GETDATE(), ":", ""), 1 , 10) , " ", "") + "."+ @[$Package::ExportFileExtension]
  • 还是别的意思?

标签: sql datetime ssis


【解决方案1】:

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]

看看这是否有影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多