2013-03-07 52 views
-2

在SQL Server 2008中,我有一個存儲過程,它接受輸入日期。我想選擇從那天的午夜開始到晚上11:59的所有行。選擇午夜和指定日期之間的所有行

CREATE PROCEDURE MyProc 
@InputDate DATETIME 
AS 
SELECT * FROM MyTable WHERE DateField >= @InputDate 

所以我希望能夠調用這個PROC類似像這樣:

EXEC MyProc @InputDate=CONVERT(DATETIME, '3/5/2013') 

它應該與「2013年3月5日0之間的日期返回所有行:0: 0' AND '3/5/2013 11:59:59'。輸入日期應該忽略時間部分,只是看日期,並附加了自己的時間成分(至少我想它應該)

有人能指出我在正確的方向?

+0

可能重複(http://stackoverflow.com/questions/9400843/date-without-the-time),根據您的評論說「輸入日期應該忽略時間部分「 – Pondlife 2013-03-07 16:41:27

回答

1

可以使用DATE數據類型是精確到一天。

CREATE PROCEDURE MyProc 
@InputDate DATE 
AS 
SELECT * FROM MyTable WHERE CAST(DateField AS DATE) = @InputDate 

EXEC MyProc @InputDate='2013-03-05' 

有[日期不受時間]一個SQLFiddle

+1

你想要做的= @InputDate,而不是> =,是的,因爲只是對那一天感興趣? – 2013-03-07 23:03:49

+0

你說得對,我是這樣編輯的 – supergrady 2013-03-07 23:24:37