2014-01-14 340 views
0

試圖找到一個查詢來選擇數據,將在特定時間08:00開始,直到第二天08:00,我有單獨的日期和時間字段,並從日期到日期選擇特定的標準。SQL查詢開始時間

select * from table 
where datefield between '2014-01-14' and '2014-01-14' 
     and timefield between '08:00' and '08:00' 
+0

您選擇記錄從同一天和時間。您使用的是什麼RDMS?如果你使用SQL Server,你可以使用'DATEADD'。 –

+0

感謝您的合作,我們正在使用MS SQl服務器,DATEADD,據我所知是用於日期時間字段,我們需要爲單獨的時間和日期字段添加標準 – user3193462

+0

您是否得到了關於您的問題的答案? –

回答

0

不明白爲什麼datefieldtimefield不會被保存在一個datetime -column。 此外,我不知道是什麼timefield是的,但如果<>作品的數據類型,這將工作:

select * from table 
where (datefield = '2014-01-14' and timefield >= '08:00') 
or (datefield = '2014-01-15' and timefield < '08:00') 

編輯:剛剛獲悉你可以一起加入datetime領域的一個datetime

select * from table 
where (datefield + timefield) >= '2014-01-11 08:00' 
and (datefield + timefield) < '2014-01-13 08:00' 

Here's the source of adding them together

+0

很好,但它不起作用,如果我們選擇其他日期選擇*從表 其中(datefield ='2014-01-11'和timefield> = '08:00') 或(datefield ='2014-01-13 '和時間字段<'08:00') – user3193462

+0

只需編輯回答遵守。 –

+0

問題是,當比較這樣的字段時(第二種解決方案),你正在殺死性能。這就是爲什麼我走出自己的方式,以避免解決方案 –

0
declare @from datetime = '2014-01-14 08:00' 
declare @to datetime = '2014-01-15 08:00' 
select * from table 
where datefield between cast(@from as date) and @to 
and not(datefield = cast(@from as date) and timefield < cast(@from as time)) 
and not(datefield = cast(@to as date) and timefield > cast(@to as time)) 
+0

非常感謝,它完美的工作 – user3193462

+0

@ user3193462不要忘記接受答案。如果你稍微等待一段可能的更好的答案,那也沒關係。 –