2016-05-13 223 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'