2014-02-13 74 views
6

我想做一個查詢的日期,這是我的樣品TSQL:如何查詢其中MS SQL與時間日期=日期沒有時間

select * from Bookings where StartTime = '2/15/2014' 

的開始時間是有價值的「2014年2月15日12: 00:00 AM」

當我詢問哪裏沒有時間的結果是0

任何人都可以幫助如何做到這一點開始時間=日期?

感謝

+2

是開始時間爲varchar?如果是轉換字符串日期和比較 –

+0

這是一個日期時間 – comfreakph

回答

7

嘗試這樣

SELECT * FROM Bookings WHERE Convert(VARCHAR(10),StartTime,101) = Convert(Varchar(10),'2/15/2014',101) 

如果您使用的是SQL Server 2012的

試試這個

SELECT * FROM Bookings WHERE FORMAT(StartTime,'M/dd/yyyy') = FORMAT('2/15/2014','M/dd/yyyy') 

SQL FORMAT

+0

仍然沒有結果 – comfreakph

+0

謝謝,這一個工程。但想法是從你再次分享感謝 選擇*從預訂在哪裏格式(StartTime,'M/dd/yyyy')='2/15/2014' – comfreakph

2

「 2014年2月15日'可以根據您的區域設置進行解釋。嘗試使用獨立於語言環境的ISO日期文字'2014-02-15'。

select * from Bookings where StartTime = '2014-02-15' 

或者,如果開始時間包括小時:

select * from Bookings where StartTime >= '2014-02-15' and StartTime < '2014-02'16' 
5

做到這一點,最好的辦法是用一個簡單的比較:

select * 
from Bookings 
where StartTime >= cast('2014-02-15' as date) and StartTime < cast('2014-02-14' as date); 

這是比較安全的方法,因爲它會利用StartTime上的索引。這個屬性被稱爲「sargability」。

在SQL Server中,強制轉換爲date也應該是優化搜索,所以你也可以這樣做:

select * 
from Bookings 
where cast(StartTime as date) = cast('2014-02-15' as date) ; 
0

我相信你也可以這樣做:

select * from Bookings where StartTime::date = '2014-2-15'