試圖找到一個查詢來選擇數據,將在特定時間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'
試圖找到一個查詢來選擇數據,將在特定時間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'
不明白爲什麼datefield
和timefield
不會被保存在一個datetime
-column。 此外,我不知道是什麼timefield
是的,但如果<
和>
作品的數據類型,這將工作:
select * from table
where (datefield = '2014-01-14' and timefield >= '08:00')
or (datefield = '2014-01-15' and timefield < '08:00')
編輯:剛剛獲悉你可以一起加入date
和time
領域的一個datetime
select * from table
where (datefield + timefield) >= '2014-01-11 08:00'
and (datefield + timefield) < '2014-01-13 08:00'
很好,但它不起作用,如果我們選擇其他日期選擇*從表 其中(datefield ='2014-01-11'和timefield> = '08:00') 或(datefield ='2014-01-13 '和時間字段<'08:00') – user3193462
只需編輯回答遵守。 –
問題是,當比較這樣的字段時(第二種解決方案),你正在殺死性能。這就是爲什麼我走出自己的方式,以避免解決方案 –
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))
非常感謝,它完美的工作 – user3193462
@ user3193462不要忘記接受答案。如果你稍微等待一段可能的更好的答案,那也沒關係。 –
您選擇記錄從同一天和時間。您使用的是什麼RDMS?如果你使用SQL Server,你可以使用'DATEADD'。 –
感謝您的合作,我們正在使用MS SQl服務器,DATEADD,據我所知是用於日期時間字段,我們需要爲單獨的時間和日期字段添加標準 – user3193462
您是否得到了關於您的問題的答案? –