【问题标题】:Date format problem using SSIS for Excel into SQL Server使用 SSIS for Excel 到 SQL Server 的日期格式问题
【发布时间】:2010-11-05 19:42:51
【问题描述】:

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

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

事情就是这样,我不能指望用户能够自己解决这个问题。

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

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

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

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

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

没有用。

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

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

还有其他想法吗?!

非常感谢,

安东尼

【问题讨论】:

    标签: sql-server excel datetime ssis date-format


    【解决方案1】:

    对我有用的是将IMEX=1 添加到 Excel 连接字符串中。

    所以它看起来像这样:

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

    【讨论】:

      【解决方案2】:

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

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

      拉吉

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-08
        • 2021-12-23
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多