代码之家  ›  专栏  ›  技术社区  ›  Eray Balkanli

如何从服务器中时区为Eastern的SSIS将dd/mm/yyyy中的日期值保存到excel中

  •  0
  • Eray Balkanli  · 技术社区  · 7 年前

    我有一个SSIS包,我正在运行一个存储过程,并将结果集保存在控制流中一个对象类型的变量(如可诱惑的)中,在数据流中,我使用脚本从对象类型的变量中检索数据,并将结果集保存在excel文件中。

    除了日期栏外,一切都很好。它应该是dd/mm/yyyy格式,但是无论我尝试了什么,我都无法阻止它在excel中使用m/d/yyyy格式。

    我试过的是:

    1-将其添加到Excel ConnectionManager的connectionstring-> Excel 12.0;HDR=Yes;IMEX=0;Readonly=False Excel 12.0;HDR=Yes;IMEX=1;Readonly=False . 两者都不起作用。

    2-添加了一个派生列任务,派生了一个新的“DerivedMyDate”列作为 STR WSTR Date . 使用此列在excel文件中保存日期值,其中类型设置为 STR DATE . 我的试验都没有成功。

    15/01/1900 . 不起作用,它正在添加日期值所在位置下方的其他行 m/d/yyyy 格式。

    Date format problem using SSIS for Excel into SQL Server

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7e34a0af-a744-4a51-b925-3284d0fba296/problem-in-date-format-while-exporting-to-excel-destination-from-flat-file-source-in-ssis?forum=sqlintegrationservices

    我的电脑时区:(UTC-05:00)东部时间(美国和加拿大);加拿大),改变这一点不是一个选项。

    1 回复  |  直到 7 年前
        1
  •  1
  •   mchist    7 年前

    在下一个解决方案中,我将尝试对T-SQL查询进行一些修改。
    在从存储过程提取数据的步骤中,如果该存储过程返回的列不多,则应声明 例如,使用与存储过程列相应的名称、类型和列数 @var . 然后需要将已执行的存储过程结果传递到变量中,

    INSERT INTO @VAR
    EXEC sp_your_stored_prodedure
    

    在最后一步中,您不应该从存储过程中检索数据,而应该从 @变量 ,并添加到select语句的新字段中 CONVERT 日期格式为103的T-SQL函数:

    SELECT
          v.*
          ,CONVERT (NVARCHAR, v.date_field, 103) as target_date_format
    FROM @var AS v
    

    在此之后,您可以使用适当格式的数据流和日期。