2013-07-11 38 views
1

我需要從前一天(sql服務器數據庫)獲取數據以傳輸到其他數據庫(postgress),但由於數據量很大,因此我只想將記錄傳輸到2小時,我的意思是我會每天運行這項工作12次,每次將轉移記錄2小時,記錄轉移不應該重複。如何從前一天獲取數據,只需要兩個小時,

所以基本上我需要一個查詢,我可以計劃運行12次,並將每個記錄轉移兩個小時。

+0

請格式化您的問題,提供有關數據庫和表結構的詳細信息。 –

+1

請參閱[DATEADD](http://msdn.microsoft.com/zh-cn/library/ms186819.aspx)函數:'DATEADD(hour,2,@date)'。 – Artemix

+0

我已經使用dateadd功能..看我的要求是假設我有12000 rec爲prev日,所以現在我的查詢應該運行,以便第一個查詢選擇數據的上午12點到凌晨2點(昨天)第二個查詢應選擇數據爲2 AM上午4點(昨天)這樣。我存放日期數據的列是類型DATETYPE。 – Shanky

回答

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 
0

如果你是時間戳插入,那麼運行select應該很簡單,只需要拉出前兩個小時的記錄。

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

(如果你想準確,那麼就不要使用GETDATE,但認爲在表或變量跑某處的最後日期和運行查詢後兩小時添加到它,然後每段時間設定的話)

相關問題