时间范围sql查询

时间:2016-05-13 04:57:27

标签: sql-server

Hello每一个我都很难在SQL中获取记录。我要求我必须在下午5:00到8:00之间获取记录。到目前为止,我做了以下。

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点输入记录一样,我希望它在这个时间范围内获取,因为它是在上面的时间范围内插入的,所以我想获取在5期间插入表中的所有记录:下午00点到第二天上午8点。

然而,我仍未能实现这一目标。如果有人建议我应该做些什么来表达,我将非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

认为您需要将AND更改为OR。按原样,你要求时间的每一行&gt;下午5点和&lt;上午08时

答案 1 :(得分: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'