【问题标题】:Combine Date from one field with time from another field - SSIS将一个字段中的日期与另一字段中的时间相结合 - SSIS
【发布时间】:2011-12-28 20:25:58
【问题描述】:

如何在 SSIS 中将这两个字段组合成 1 列日期时间类型?两个源表都在日期时间,目标表也是。

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 

【问题讨论】:

标签: sql-server ssis


【解决方案1】:

您需要两个步骤来实现您的目标。

1) 首先将日期和时间合并为一行。我猜你有一把钥匙可以将两者联系起来,所以在合并连接转换中使用它(你需要在进入合并之前按此列排序)来创建单行,例如

2) 在派生列转换中将两列转换为一列,使用以下转换(DT_DBTIMESTAMP)(SUBSTRING((DT_WSTR,23)Dates,1,11) + SUBSTRING((DT_WSTR,23)Times,12,8))

这应该为您提供一个新的日期时间列以插入到您的数据库中,例如

【讨论】:

  • 嗨达里尔!哇,这是一个非常彻底的解释。你是明星!非常感谢:)
  • 惊人的答案!非常感谢!
【解决方案2】:

计算将时间添加到日期的派生列的一种更简洁、更有效的方法是使用以下表达式:

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]),或者在日期上添加一个小时。

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2016-10-26
    • 1970-01-01
    相关资源
    最近更新 更多