2012-01-20 149 views
0

我已經通過相關的職位閱讀,但還沒有找到答案,所以如果我可以:SQL Server 2008中 - 時間列比較當前日期時間

我在表中創建一個列如下:

[到達]時間NOT NULL,

什麼是執行這樣的查詢最有效的方法:

SELECT * FROM myTable的其中「A rrival距離現在1小時「?

DATEDIFF(小時,GETDATE(),到達)

給了我一個非常大的價值,可能的,因爲到達的1901,0,0日期部分。仍然試圖理解這一點,如果任何人對我有一個快速的答案,這將是偉大的。

再次,性能是至關重要的。

謝謝。

回答

2

我可能會做這樣的事情......

select >>select list<< 
from table 
where datediff(minute, getdate(), [Arrival]) < 60 

,或者使用小時

select >>select list<< 
from table 
where datediff(hour, getdate(), [Arrival]) < 1 

編輯:另外,如果性能是至關重要的,那麼我會建議也驗證輸入不允許古代日期。如果您有經常性的時間表是不依賴於一年,甚至一個月(實際上,你只是想找小時和分鐘),然後DATEPART的一些使用是適當的。

select ____ 
from [table] 
where (((datepart(hour, getdate()) = datepart(hour, [Arrival])) AND (datepart(minute, [Arrival]) - datepart(minute, getdate()) < 60) 
+1

謝謝。 datepart是我失蹤的元素。 –

相關問題