如何将第一天动态地作为ssis包中参数的值获得?

时间:2015-08-06 10:45:41

标签: sql-server ssis

我需要一年中的第一天作为参数值 简要说明:  我有一个这样的SQL查询命令,用ssis OLE DB源代码编写

SELECT  [StudentID]
      ,[StudentName]
      ,[StartDate]
      ,[EndDate]
      ,[DepartmentID]
  FROM [Student].[dbo].[StudentPrimaryDetails] where StartDate = ?

结果

 StudentID  StudentName StartDate   EndDate DepartmentID
    1   Shah    Jan  1 2014 12:00AM NULL    1
    2   Sumitra Jan  1 2014 12:00AM NULL    1
    3   Sumathi Jan  1 2015 12:00AM NULL    2
    4   Avinash Jan  1 2016 12:00AM NULL    3
    5   subbu   Jan  1 2015 12:00AM NULL    4
    6   Venky   Jan  1 2015 12:00AM NULL    1
    7   Akash   Jan  1 2015 12:00AM NULL    2

我在SSIS中添加了日期参数 将Startdate和datetype命名为datetime,将值命名为2015-01-01

但是,而不是日期参数中的硬代码值我需要传递动态值并获得每年的第一天我删除硬代码并在需要时运行包而不更改包中的任何内容。请帮助我。< / p>

2 个答案:

答案 0 :(得分:1)

以下查询将给出当年的开始日期:

 SELECT        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)

根据您的需要进行整个查询:

SELECT  [StudentID]
      ,[StudentName]
      ,[StartDate]
      ,[EndDate]
      ,[DepartmentID]
  FROM [Student].[dbo].[StudentPrimaryDetails] where StartDate = (
SELECT        DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) )

答案 1 :(得分:0)

我知道这个问题是在大约4年前提出的,但是最近我遇到了类似的问题。这是我的处理方式: 首先,我在Package级别创建了String变量。 然后,我使用派生列将字符串转换为DB_DateTime。

PackageVariable

Derived Column Transformation

我希望这对遇到类似问题的人有所帮助。