列名rcvdate,該值是這樣的:檢索日期部分從其中有日期時間類型
2009-10-20 10:00:00
我想要做一個選擇,我的查詢:
SELECT *
FROM data
WHERE rcvdate = '2009-10-20'
不工作,我期待可運行的查詢,因爲我檢查了很多查詢,但他們沒有工作。
列名rcvdate,該值是這樣的:檢索日期部分從其中有日期時間類型
2009-10-20 10:00:00
我想要做一個選擇,我的查詢:
SELECT *
FROM data
WHERE rcvdate = '2009-10-20'
不工作,我期待可運行的查詢,因爲我檢查了很多查詢,但他們沒有工作。
覈對的時間間隔,如果你想爲一天中的所有行:
SELECT *
FROM data
WHERE rcvdate >= '20091020' AND
rcvdate < DATEADD(day, 1, '20091020')
從SQL Server 2008中,你可以使用它代替:
SELECT *
FROM data
WHERE CAST(rcvdate as DATE) = '2009-10-20'
SELECT * FROM data WHERE CONVERT(rcvdate, date) = '2009-10-20'
您應該將日期時間字段轉換爲日期字段,因爲在你的查詢「2009-10-20」轉換爲日期時間「2009-10-20 00:00:00」
UPD:
SELECT * FROM data WHERE CAST(rcvdate AS date) = '2009-10-20'
將有相同的結果。
您可以在下面去方式,它始終有效,謝謝
SELECT * FROM data WHERE
DATEDIFF(dd,0,rcvdate)
BETWEEN DATEDIFF(dd,0,'2009-10-20') AND
DATEDIFF(dd,0,'2009-10-20')
這裏是參考,你可以用不同的方式來轉換日期。 http://www.sqlusa.com/bestpractices/datetimeconversion/
由於
第一種方法不具有在列的函數=更好的性能 – gbn 2012-03-26 08:01:38
@gbn - 鑄造'datetime'迄今爲止是可優化搜索。你的意思是它速度慢嗎? – 2012-03-26 08:58:52
哦。它現在是可挖掘的嗎? – gbn 2012-03-26 10:01:18