我有一个 SSIS 包,我正在运行一个存储过程并将结果集保存在控制流中的对象类型变量(作为临时变量)中,并且在数据流中我使用脚本从对象类型检索数据变量将结果集保存在 Excel 文件中。
除了日期列之外,一切正常。它应该是 dd/mm/yyyy 格式,但是无论我尝试过什么,我都无法阻止它在 Excel 中采用 m/d/yyyy 格式。
我尝试过的是:
1- 将其添加到 Excel ConnectionManager ->
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
。我的尝试都没有成功。
3-添加了数据转换任务,尝试了我在第二步中尝试过的所有相同操作,但没有任何效果。
4- 在 Excel 中添加了虚拟第一行,其中数据列类似于
15/01/1900
。不起作用,它正在下面添加其他行,其中日期值采用 m/d/yyyy
格式。
检查了这些页面,答案对我不起作用: 使用 SSIS for Excel 导入 SQL Server 的日期格式问题
我电脑的时区:(UTC-05:00) 东部时间(美国和加拿大),无法更改此设置。
如有任何帮助或建议,我们将不胜感激。
我将尝试在下一个解决方案中为您建议稍微修改一下 T-SQL 查询。
在从存储过程中提取数据的步骤中,如果此返回的列不多,您应该声明一个表变量,其名称、类型和列数与您的存储过程列相适应,例如
@var
。然后你需要将执行的存储过程结果传递到变量中,
INSERT INTO @VAR
EXEC sp_your_stored_prodedure
在最后一步,您应该不从存储过程中检索数据,而是从
@var
检索数据,并使用日期格式为 103 的 CONVERT
T-SQL 函数在 select 语句中添加新字段:
SELECT
v.*
,CONVERT (NVARCHAR, v.date_field, 103) as target_date_format
FROM @var AS v
此后,您可以以适当的格式使用此数据流和日期。