2012-04-05 55 views
5

兩次選擇我想建立,將選擇一個基於DateTimeSyncDate查詢。查詢之間

由於一些背景,我從查詢表在每天同一時間精確時間得到每天進口數以千計。我想查找那些沒有在一天中的「常規」時間導入的條目。

因此,我想查詢DateTime列中的時間在兩次之間的時間:在任何日/月/年的時間段內可以說14:00-14:30(2-230)。

SELECT * FROM MyTable 
WHERE DatePart(SyncDate, ..?) BETWEEN (14:00..?) and (14:30..?) 

DatePart功能似乎是我所需要的,但我不知道如何將它應用到這種情況。你的幫助非常感謝哦偉大的問詢者。

編輯:我錯了,我正在運行的SQL服務器2005年我的後端。抱歉!

回答

21

既然你的SQL Server 2008 ,您可以使用新的數據類型TIME

SELECT * FROM MyTable 
WHERE CAST(SyncDate AS TIME) BETWEEN '14:00' and '14:30' 

如果你的後臺是不是還沒有2008年那麼:-)你需要這樣的:

SELECT * FROM MyTable 
WHERE DATEPART(HOUR, SyncDate) = 14 AND DATEPART(MINUTE, SyncDate) BETWEEN 0 AND 30 

檢查14:00-14:30小時。

+0

奇怪。我正在運行2008年,它將「時間」視爲關鍵字,但表示它不是「定義的系統類型」。 – ImGreg 2012-04-05 20:57:00

+0

是您的服務器後臺運行的2008年,還是隻是你的SQL Server管理Studio副本?檢查它在2008 R2,它應該工作得很好.... – 2012-04-05 20:59:00

+0

你是對的,只是工作室。後端是MDAC版本還是我該如何檢查? – ImGreg 2012-04-05 21:01:33

2

這個怎麼樣....

select * from MyTable where 
cast(cast(datepart(HH,SyncDate) as char(2)) + cast(datepart(HH,SyncDate) as char(2)) as int) between 1400 and 1430 
+0

有種方法。然而,把它們作爲int並在'1400'附近加上撇號,它確實有效。 +1爲創新方法。 – ImGreg 2012-04-05 21:08:08