我如何在SSIS中将这两个字段组合成一个datetime类型的列?两个源表都在datetime中,目标表也是如此。
Dates
2009-03-12 00:00:00.000
2009-03-26 00:00:00.000
2009-03-26 00:00:00.000
Times
1899-12-30 12:30:00.000
1899-12-30 10:00:00.000
1899-12-30 10:00:00.000
答案 0 :(得分:5)
您需要两个步骤才能实现目标。
1)首先将Dates和Times合并为一行。我猜你有一把钥匙将这两者联系起来,所以在合并连接转换中使用它(你需要在进入合并之前按此列排序)来创建一行,例如。
2)使用以下强制转换(DT_DBTIMESTAMP)(SUBSTRING((DT_WSTR,23)Dates,1,11) + SUBSTRING((DT_WSTR,23)Times,12,8))
这应该为您提供一个新的日期时间列,以便插入数据库,例如
答案 1 :(得分:0)
一种更整洁,更有效的方法来计算在日期中添加时间的派生列是使用以下表达式:
DATEADD("Ms",DATEDIFF("Ms",NULL(DT_DATE),[Time]),[Date])
这分为两部分:在内部,DATEDIFF("Ms",NULL(DT_DATE),[Time])
计算[Time]
超过null
日期的时间(在这种情况下为1899-12-30 00:00:00
) ,然后表达式的外部部分将该毫秒数添加到[Date]
,例如如果时间是01:00:00,即3,600,000毫秒,那么它最终会添加DATEADD("Ms",3600000,[Date])
,或者在日期中添加一小时。