2016-02-12 39 views
1

我正在使用OLE DB命令任务来执行INSERT语句。 INSERT语句接受许多由?表示的参数。 SSIS将SQL Server DATETIME列映射到DT_DBTIMESTAMP类型的参数,我认为这很好。SSIS OLE DB命令日期参数格式

作为DT_DBTIMESTAMP被传递到SQL Server作为格式的字符串 'YYYY-MM-DD HH:MM:SS' 插入查询失败,但数据库期待 'DD/MM/YYYY HH:NN:SS' 。该错误是由于SQL Server以错误的方式处理“日”和“月”部分。

我见过使用派生列等对SSIS格式化日期格式化问题的回复,但我已经有了DT_DBTIMESTAMP值(它没有格式!),并且在SSIS将参数值设置为字符串时出现问题,并且我看不到如何控制格式,所以它输出'dd/MM/yyyy hh:mm:ss'。

我试过设置LocaleID和语言,但似乎仍然没有区别。一个有趣的观察是,只有通过SQL代理作业运行时才会发生此错误。

任何帮助非常感谢。

+0

您试图插入的列的数据类型是什么?什么是您映射到参数的SSIS变量的数据类型? –

+0

和你得到的错误信息是什么?也可以帮助顶层发布插入查询。我知道你觉得你已经隔离了这个问题,但是如果你花时间详尽地解决问题,答案会变得明显 –

回答

0

运行时出现什么错误? 解决这个问题的唯一方法是,在读取源文件和写入SQL表之间将DT_DBTIMESTAMP转换为DATETIME。