介于两者之间的差异与< =& > =

时间:2015-09-04 11:27:33

标签: sql sql-server ssms

我需要在两个日期间隔之间选择日期。

我尝试了两个查询,如下所示

SELECT * FROM [dbo].[BudgetOffice] BUD
            where  Week      BETWEEN '2015-08-03' AND '2015-08-03'.

 SELECT * FROM [dbo].[BudgetOffice] BUD
            where  Week      >= '2015-08-03' AND Week <= '2015-08-03'.

两者都返回相同的结果。我以为

  

between

将仅返回输入值之间的值并排除输入值。那是对的吗?。如果两者相同,那么性能更可行。?

1 个答案:

答案 0 :(得分:0)

考虑代码段:

SELECT * FROM list_of_integers_from_1_to_100 AS table
WHERE table.number BETWEEN 2 AND 80;

这种方法比“table.number&gt; = 2 AND table.number&lt; = 80”更具可读性。 BETWEEN将返回2到80之间的所有值(包括两个数字),这实际上是相同的。

性能方面,据我所知,没有重大差异。

BETWEEN有几个很好的事情比使用运算符更简单。考虑:

table.number NOT BETWEEN 2 AND 80

table.number < 2 AND table.number > 80

乍一看哪一个更容易?我投票支持第一个,但最终完全可以选择使用哪一个。

另外,正如top answer in this question中所指出的,BETWEEN可以帮助您避免不必要的评估。我将从该主题中复制粘贴代码段:

SELECT  AVG(RAND(20091225) BETWEEN 0.2 AND 0.4)
FROM    t_source;

---
0.1998

SELECT  AVG(RAND(20091225) >= 0.2 AND RAND(20091225) <= 0.4)
FROM    t_source;

---
0.3199