派生日期计算

时间:2014-12-29 02:51:28

标签: sql sql-server ssis

我目前正在使用SSIS将数据输入SQL Server数据库。计划是每周都要这样做,但它发生的那一天可能会有所不同,具体取决于数据的推送时间。

我使用SSIS从Excel工作表中获取数据,并将每行输入数据库(每周约150行)。唯一的共同点是所有行之间的日期。我想在推送的那一天为每一行添加一个日期。由于推送日期可能不同,我无法使用当前日期,我想使用从该行输入的上一个日期开始的一周。

但是因为大约有150行我不知道如何实现这一目标。如果我可以在SQL Server中设置它,那么每次输入一组新行时,它会比上一组行增加7天。但我也很乐意在SSIS中这样做。

有没有人知道如何实现这一目标?或者,我也不介意在C#中这样做。

1 个答案:

答案 0 :(得分:1)

这是一种做你想做的事情的方法:

  1. 创建一个列,用于跟踪目标表中的数据输入日期。
  2. 在数据流任务之前添加执行SQL任务。此任务将检索最新的数据输入日期+ 7天。查询应该类似于:

    select dateadd(day,7,max(trackdate)) from targettable

  3. 将SQL结果分配给包变量。

  4. 在数据流任务中的源组件和目标组件之间添加派生列转换。创建一个虚拟列以保存跟踪日期并将变量分配给它。

  5. 将Excel映射到数据流任务中的表时,将先前创建的虚拟列映射到跟踪日期列。现在,当您将数据写入数据库时​​,您的跟踪列将具有所需的日期。
  6. Derived Column Transformation