0

我有一个日常工作,它运行一个 SSIS 包,以使用日期范围从表中选择前一天的记录数。我想将其更改为每隔几分钟运行一次,因此我需要将上一次运行查询中使用的日期时间保存到我想存储在另一个数据库表中的变量中。有人建议我使用 IO 存储它,但不确定它们是什么意思。

SELECT [authorUrl],[postDate] ,[dateadded]
FROM [Feeds].[dbo].[XMLFeed]
where CONVERT(DATE, DateAdded) = DATEADD(DAY, -1, CONVERT(DATE, SYSDATETIME()))
order by dateadded desc

如何将 where 语句更改为 date added 等于或大于上次运行此选择的位置。

4

1 回答 1

1

您必须将最后一个执行值存储在某处的表中。首先,创建一个表来保存您最后的执行参数:

create table LastExecutionParameters
(
  Id int identity(1,1) not null,
  LastExecutionDate datetime
)

然后,以这种方式使用它:

declare @executionDate datetime = 
    (select top 1 DateAdd(Day, 1, LastExecutionDate) 
       from LastExecutionParameters 
      order by Id desc);

SELECT [authorUrl],[postDate] ,[dateadded]
FROM [Feeds].[dbo].[XMLFeed]
where CONVERT(DATE, DateAdded) = DATEADD(DAY, -1, @executionDate)
order by dateadded desc

insert into LastExecutionParameters values (@executionDate);

当然,更改dateadd呼叫以满足您的需求。

于 2012-11-09T18:31:33.057 回答