如何在SQL Server中使用between运算符?

时间:2018-05-02 17:40:02

标签: sql-server between

在我的SQL Server查询中,我有这个

to < GETDATE() or GETDATE() < from

是否可以使用BETWEEN运算符来简化此操作?

3 个答案:

答案 0 :(得分:1)

是,但(1)这样做没有查询计划的好处,(2)这也取决于您的要求。有关详细信息,请阅读我的好友文章Beware of Between

例如,从文章中......如果我在两棵树之间驾驶我的车,我不想包括树木(否则我有树木损坏和/或汽车损坏)。但如果我在纽约和伦敦之间搭乘喷气式飞机,两个城市都包括在内(赶上喷气式飞机并着陆喷气式飞机)。树木和#34;之间的汽车#34;不同于城市之间的喷气式飞机&#34 ;;在SQL&#39;之间用于“包容性”用途感受&#34;城市之间的喷射&#34;。

另外,在一点切线上,你真的需要声明中的时间组件吗?如果不是CAST(GETDATE()作为日期)将仅返回日期部分。

答案 1 :(得分:1)

为了说明我的评论,以下是使用BETWEEN重写当前过滤器的方法。

我不会假设[from]和[to]中的值有任何规则,要么可能小于另一个,要么它们可能相等。如果有任何此类规则,那么可能会简化这一规则。

实际上,在仔细考虑这个问题后,我发现逻辑并不像我原先想象的那么复杂。但是,我仍然不会称它为“简化”#34;你已经拥有的东西。

WHERE 
 ([from] <= [to] AND GETDATE() NOT BETWEEN [from] AND [to]) --in this case it's a simple NOT BETWEEN
 OR 
 ([from] > [to])  --if [from] is greater than [to] then actually every possible value of getdate must be either greater than [to] or less than [from]

答案 2 :(得分:-1)

当然可以简化到

之间
where GETDATE() BEWTWEEN to AND from