使用SSIS for Excel到SQL Server的date格式问题

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

不幸的是,电子表格中的列包含以dd / MM / yyyy(使用Excel'General'格式化)stringforms存储的date以及使用Exceldate格式dd / MM / yyyy(使用locale'English英国)')。

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

在查看电子表格时,所有的date都是正确的,例如dd / MM / yyyy。

我想要将值导入到数据库中的保留表中的varchar列。 然后我运行一个存储过程,将这些值复制到包含datetime列的适当表中。

问题是存储在电子表格中并使用date格式的date会以MM / dd / yyyy的forms导入到SQL Server中,并且以stringforms存储的date将以dd / MM / yyyy格式导入。 我在连接string中有IMEX = 1。

因此,在同一个varchar列中使用两种格式的date显然会导致出现问题,因此我试图将其放入date时间列中

SET DATEFORMAT MDY; SET DATEFORMAT DMY; 

没用。

有谁知道为什么SSIS包会导入到Excel电子表格看起来正确的date到SQL服务器MM / DD / YYYY无论如何?

有没有办法强制SSIS包导入date作为dd / MM / yyyy,将date格式应用与这个date组合的date作为string和单元格?

任何其他的想法?

非常感谢,

安东尼

我想你已经回答了你自己的问题。 date格式化的单元格的导入被视为date,其他视为一个string。 可能你的SQL服务器date设置是MM / dd / yyyy,因此转换。

你为什么不尝试在你的SSIS包中添加一个数据转换步骤,并将列中的每个元素转换为单一格式 – date时间或string。 然后我相信SQL服务器将以同样的方式处理所有这些。

拉吉

什么对我来说是添加IMEX=1到Excel连接string。

所以它会看起来像这样:

 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";