2016-05-13 264 views
-1

你好我每個人都有點在獲取SQL中的記錄。我得到了一個要求,我必須在下午5點到8點之間取錄音。到目前爲止,我做了以下。時間範圍sql查詢

select * from dlg_deal_transaction inner join dlg_deal on dlg_deal_transaction.deal_id = dlg_deal.id where Cast(dlg_deal_transaction.created_on as time) > '17:00:00.0000000' And 
    Cast(dlg_deal_transaction.created_on as time) < '08:00:00.0000000' 

問題是,像我在凌晨1:00進入了一個紀錄,我想,所以我想獲取所有插入的記錄,因爲它是插在上述時間範圍內它在這個時間範圍內取桌子在下午5點到第二天上午8點。

但是我仍未能做到這一點。如果有人建議我應該做些什麼來實現,會非常感激。提前致謝。

+0

Wts你在查詢或輸出中有問題嗎?或者PLZ分享樣本數據和預期結果。 –

+0

我更新了這個問題,請檢查:) –

+0

你是否通過@Jeffrey Van Laethem檢查了答案? –

回答

1

認爲您需要將您的AND更改爲OR。原來,你要求的每一行的時間是>下午5點和<上午8點

1

問題是如果創建的日期是01/01/2016那麼它會繼續在上午8點之前搜索記錄日期和下午5點後的記錄,你永遠不會得到你想要的結果之間。您可以添加一天到創建的日期,然後您的查詢可能會工作。

select * from dlg_deal_transaction inner join dlg_deal on dlg_deal_transaction.deal_id = dlg_deal.id where Cast(dlg_deal_transaction.created_on as time) > '17:00:00.0000000' And 
    Cast(DATEADD(day,1,dlg_deal_transaction.created_on) as time) < '08:00:00.0000000'