系统简要背景:
使用SSIS包将数据从SQL Server移至MySQL。
我使用OLE DB连接来连接到SQL Server。 我使用ODBC Unicode连接来连接到MySQL。
大多数系统都能正常工作,但是将SSIS变量传递到Execute SQL Task中时出现日期转换问题。它尝试将日期插入MySQL数据库的表中。尝试输入日期为{1/1/2010 12:00:00 AM}时,出现以下错误。
“ [执行SQL任务]错误:执行查询”插入ETLDate值(?)“失败,并显示以下错误:” [MySQL] [ODBC 5.3(w)驱动程序] [mysqld-5.7.22-log]日期时间值不正确:行1“” LastETLDate“的列的'-10165-58296-9719 16613:13824:2136'。可能的失败原因:查询问题,” ResultSet“属性未正确设置,参数未正确设置或连接未正确建立。”
日期始终为“ -10165-58296-9719 16613:13824:2136”,因此我知道该值已正确传递,只是转换或编码方式不同。这是我设置的参数。
一些最后的笔记:
我尝试使用该参数的所有其他日期数据类型,但遇到相同的问题。
我只使用参数而不是存储过程尝试了直接插入语句,并且遇到了同样的问题。
所有将数据(包括日期)从SQL Server DB移动到MySQL数据库的数据流任务都可以正常工作。
如果在SQL Server DB上创建类似的存储过程和表(具有OLE DB连接的更新的参数设置),则可以正常工作。
有人知道为什么日期传递不正确或对此问题有解决方法吗?