我需要从前一天(sql server db)获取数据以传输到其他数据库(postgress),但由于数据量很大,我只想传输 2 小时的记录,我的意思是我每天将运行 12 次这项工作,每次时间它将传输记录 2 小时,传输的记录不应重复。
所以基本上我需要一个查询,我可以安排它运行 12 次,每次传输两个小时的记录。
我需要从前一天(sql server db)获取数据以传输到其他数据库(postgress),但由于数据量很大,我只想传输 2 小时的记录,我的意思是我每天将运行 12 次这项工作,每次时间它将传输记录 2 小时,传输的记录不应重复。
所以基本上我需要一个查询,我可以安排它运行 12 次,每次传输两个小时的记录。
declare @StartHour datetime, @EndHour datetime
set @EndHour = dateadd(hh,datediff(hh,0,GetDate()),0)
set @StartHour = dateadd(hh,-2,@EndHour)
--The above make the query work with start and end on-the-hour
--so it can be run any time within one hour to get the data
--for the two hours ending on the previous hour
select * from whatever where TheDate between @StartHour and @EndHour
如果您正在为插入添加时间戳,那么运行选择以仅提取前两个小时的记录应该很简单。
SELECT * FROM tblFoo WHERE tblFoo.insertionDate>DATEADD(hour,-2,GETDATE())
(如果你想准确,那么不要使用 GETDATE 而是保存在某处的表或变量中运行的最后一个日期,并每次添加两个小时,然后在运行查询后设置它)