2012-05-05 35 views
0

我有一個SQL Server中的以下數據2000表:與SQL Server日期時間的邊緣情況處理

Dates 
----------------------- 
2012-05-04 01:23:45.678 
2012-05-05 01:23:45.678 
2012-05-06 01:23:45.678 

假設GETDATE()回報:

2012-05-05 12:34:56.789 

我需要最有效的(優雅)查詢從上面返回第2行和第3行,標準爲:

日期部分日期> = GETDATE()

+0

相關:http://stackoverflow.com/questions/353014/convert-sql-server-datetime-fields-to-compare-date-parts-only-with-indexed-look –

+0

@Oded:'WHERE CONVERT (VARCHAR,Dates,101)> = GETDATE() - 1(i)它不使用任何索引(ii)當'GETDATE()'的時間部分恰好爲'00:00:00' 。 –

+0

從本地變量的「GETDATE()'(或者你需要的確切值 - 沒有時間部分)開始。 – Oded

回答

4
DECLARE @Now DATETIME 
SELECT @Now = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) 

SELECT ... 
WHERE Dates >= @Now 

thisthis改編的日期部分。