使用 SSIS for Excel 导入 SQL Server 的日期格式问题

Ant*_*ony 4 sql-server excel datetime ssis date-format

我正在尝试使用 SSIS 将 Excel 2003 电子表格中的一列日期导入 SQL Server 2005。我在英国,所以希望日期格式为 dd/MM/yyyy。

不幸的是,电子表格中的列包含以 dd/MM/yyyy 格式存储为字符串的日期(使用 Excel 'General' 格式)以及使用 Excel 'Date' 格式 dd/MM/yyyy 的日期(使用区域设置 'English (英国)')。

这就是它的方式,我不能指望用户能够自己解决这个问题。

查看电子表格时,所有日期在视觉上都是正确的,即 dd/MM/yyyy。

我正在尝试将值导入数据库中保存表中的 varchar 列。然后我运行一个存储过程,将这些值复制到包含日期时间列的正确表中。

问题在于,存储在电子表格中并使用日期格式的日期将作为 MM/dd/yyyy 导入 SQL Server,而作为字符串存储的日期将作为 dd/MM/yyyy 导入。我在连接字符串中有 IMEX=1 。

在同一 varchar 列中使用两种格式的日期显然会在我尝试将其放入日期时间列时导致问题,因此

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;
Run Code Online (Sandbox Code Playgroud)

没有用。

有谁知道为什么 SSIS 包会将 Excel 电子表格中看似正确的日期作为 MM/dd/yyyy 导入 SQL Server?

无论如何,是否有强制 SSIS 包将日期导入为 dd/MM/yyyy 的日期,该日期将作为字符串和应用了日期格式的单元格使用这种日期组合?

还有其他想法吗?!

非常感谢,

安东尼

Raj*_*Raj 5

我想你已经回答了你自己的问题。日期格式单元格的导入被视为日期,而其他单元格被视为字符串。可能您的 SQL 服务器日期设置是 MM/dd/yyyy,因此转换。

为什么不尝试在 SSIS 包中添加数据转换步骤并将列中的所有内容转换为单一格式 - 日期时间或字符串。然后我确信 SQL Server 会以相同的方式处理所有这些。

拉吉