该值为datetime2
类型。AFAIK SSIS 不支持 datetime2 。您需要将其作为字符串存储在数据库中,然后通过将其转换为 datetime2 来更新列。
Here is 微软连接问题
更新:使用DT_DBTIMESTAMP2
您可以将字符串转换为正确的日期时间格式
下面的代码在派生列中运行得很好
(DT_DBTIMESTAMP2,7)"2013-5-27 16:42:37.490000"
7 是这里的进动。如果日期时间的格式不同,上面的代码将不起作用。例如MM/DD/YYYY HH:mm:ss.ffffff
.
不过你可以使用Script component
并将不同日期时间格式的数组传递给Datetime.ParseExact
功能
Step1:拖拽一个Script组件,新建一个输出列DT_DBTIMESTAMP
数据类型并将其命名为NewDate
.
步骤2:编写以下C#代码
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string[] format = new string[] { @"M/dd/yyyy HH:mm:ss.ffffff",
@"MM/dd/yyyy HH:mm:ss",
@"M/d/yyyy HH:mm:ss" ,
@"M/dd/yyyy HH:mm:ss.ffffff",
@"MM/dd/yyyy HH:mm:ss.ffffff",
@"M/d/yyyy HH:mm:ss.ffffff"};
DateTime dt = DateTime.ParseExact(Row.Date,
format ,
CultureInfo.InvariantCulture,
DateTimeStyles.None);
Row.newDate = dt;
}