1

他のDB(ポストグレス)に転送するために前日(SQLサーバーDB)からデータを取得する必要がありますが、データが巨大であるため、2時間だけレコードを転送したいので、このジョブを1日12回実行します。転送時間は 2 時間です。転送されたレコードは重複してはなりません。

したがって、基本的には、12 回実行するようにスケジュールでき、それぞれ 2 時間分のレコードを転送するクエリが必要です。

4

2 に答える 2

1
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
于 2013-07-11T13:01:00.320 に答える
0

挿入にタイムスタンプを付ける場合は、select を実行して、直前の 2 時間分のレコードのみを抽出するのは簡単です。

SELECT * FROM tblFoo WHERE tblFoo.insertionDate>DATEADD(hour,-2,GETDATE())

(正確にしたい場合は、GETDATEを使用せずに、テーブルまたは変数で最後に実行された日付を保持し、毎回2時間を追加して、クエリの実行後に設定します)

于 2013-07-11T12:58:48.247 に答える