将Excel导入SQL-日期时间转换失败

时间:2018-11-27 18:01:21

标签: sql-server excel import

我正在尝试将excel导入我的SQL数据库,但出现此错误:

  

消息   错误0xc0202009:数据流任务1:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。   OLE DB记录可用。源:“ SQL Server的Microsoft OLE DB提供程序”结果:0x80004005说明:“从字符串转换日期和/或时间时转换失败。    (SQL Server导入和导出向导)

数据库需要以下数据:

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime hechosf_periodo { get; set; }

如何存储这些数据的示例:

enter image description here

这是将数据输入到Excel中的方式:

enter image description here

SQL将excel列标识为datetime,并将尝试将其转换为datetime2。

我该怎么办才能传递此错误?

enter image description here

更新

查看执行后报告

enter image description here

我已经看到它试图读取更多的行。我正在尝试删除工作表中每个单元格的内容,但这仍然存在。

1 个答案:

答案 0 :(得分:0)

您应该在流程中的descripted here的Source和Destination元素之间使用 Derived Column Transformation

您看到@ [System :: StartTime]变量吗?您应该添加列(在左侧窗格中)而不是此变量,并从 Type Casts 文件夹(请参见rigth窗格)中选择适当的转换类型。请参阅SSIS与SQL类型at this page之间的映射。
它将是 DT_DBTIMESTAMP2 DT_DBTIMESTAMP ,表达式将类似于[DT_DBTIMESTAMP]old_column_name。在派生列中,您需要保留“添加新...”选项,然后需要命名该新列并在 Destination 元素(而非excel)中使用此新列时间”列。
enter image description here