在SSIS脚本组件中分配Date变量

时间:2015-08-27 14:09:42

标签: c# datetime ssis

在我的脚本组件中,我尝试将值分配给Date列(数据类型为DT_DATE)。这些是C#中的DateTime个对象,所以我认为以下内容可行:

FooBuffer.Datevar = DateTime.Now;

它编译,但该行在运行时出错:

Error: 0xC020901C at FoobarFlow, OLE DB Destination [77]: There was an error with OLE DB Destination.Inputs[OLE DB Destination Input].Columns[Datevar] on OLE DB Destination.Inputs[OLE DB Destination Input]. The column status returned was: "The value could not be converted because of a potential loss of data.".

我的猜测是,因为C#中的DateTime类被设计为具有高达几秒的精度(甚至毫秒 - 不确定),并且DT_DATE的精度仅为最多几天,可能会丢失信息。

所以问题是,如何正确分配这样一个列的值?有没有办法在分配之前将DateTime对象转换为Date

2 个答案:

答案 0 :(得分:0)

假设您在任意命名的变量newDate中有DateTime值,请尝试以下操作:

FooBuffer.DateVar = new DateTime(newDate.Year,
                                 newDate.Month,
                                 newDate.Day,
                                 newDate.Hour,
                                 newDate.Minute,
                                 newDate.Second);

答案 1 :(得分:0)

DateTime.Now包含的精度高于DT_DATE能够存储的精度。试试这个。

DateTime.Now.Date