我實驗了一下,其實是差不多的?都是356089條記錄select  * from tabOrderRequire
where convert(varchar(10),date1,120)>='2004-03-01' AND convert(varchar(10),date1,120)<='2005-03-01'
這個語句用1分36秒
select  * from tabOrderRequire
where convert(varchar(10),date1,120) between '2004-03-01' AND '2005-03-01'
這個語句用1分21秒說明後面的語句效率高一些

解决方案 »

  1.   

    运算符的优先顺序
    当一个复杂的表达式有多个运算符时,运算符优先性决定执行运算的先后次序。执行的顺序可能严重地影响所得到的值。运算符有下面这些优先等级。在较低等级的运算符之前先对较高等级的运算符进行求值。 +(正)、-(负)、~(按位 NOT)
    *(乘)、/(除)、%(模)
    +(加)、(+ 串联)、-(减)
    =,  >,  <,  >=,  <=,  <>,  !=,  !>,  !< 比较运算符
    ^(位异或)、&(位与)、|(位或)
    NOT
    AND
    ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
    =(赋值) 
    当一个表达式中的两个运算符有相同的运算符优先等级时,基于它们在表达式中的位置来对其从左到右进行求值。例如,在下面的示例中,在 SET 语句中使用的表达式中,在加号运算符之前先对减号运算符进行求值。DECLARE @MyNumber int
    SET @MyNumber = 4 - 2 + 27
    -- Evaluates to 2 + 27 which yields an expression result of 29.
    SELECT @MyNumber在表达式中可以使用括号替代所定义的运算符的优先性。首先对括号中的内容进行求值,从而产生一个值,然后括号外的运算符才可以使用这个值。例如在下面的示例中,在 SET 语句所使用的表达式中,乘运算符比加运算符有更高的优先权,所以先对乘运算符进行求值;表达式的结果是 13。DECLARE @MyNumber int
    SET @MyNumber = 2 * 4 + 5
    -- Evaluates to 8 + 5 which yields an expression result of 13.
    SELECT @MyNumber在下面的示例中,在 SET 语句使用的表达式中,括号使得首先执行加法;表达式结果是 18。DECLARE @MyNumber int
    SET @MyNumber = 2 * (4 + 5)
    -- Evaluates to 2 * 9 which yields an expression result of 18.
    SELECT @MyNumber如果表达式有嵌套的括号,那么首先对嵌套最深的表达式求值。下面的示例中包含嵌套的括号,其中表达式 5 - 3 在嵌套最深的那对括号中。该表达式产生一个值 2。然后加运算符将这个结果与 4 相加,这样就得出一个为 6 的值。最后将 6 与 2 相乘,产生一个表达式结果 12。DECLARE @MyNumber int
    SET @MyNumber = 2 * (4 + (5 - 3) )
    -- Evaluates to 2 * (4 + 2) which further evaluates to 2 * 6, and 
    -- yields an expression result of 12.
    SELECT @MyNumber
      

  2.   

    还有一种方法,效率更高
    select  * from Table2
    where DateDiff(dd,[date],'2005-05-01')<=0 AND DateDiff(dd,date,'2005-05-15')>=0我在70万数据的表里测试,每种方法测试10次。
    一楼的第一种方法的平均时间是26秒,
    一楼的第二种方法的平均时间是39秒,
    我的第三种方法的平均时间是18秒。
      

  3.   

    两者意思是不同的.BETWEEN AND和<= AND >= 一样.所以应该是BETWEEN AND略好一点
      

  4.   

    我还要比较hh:mm:ss的,不是一天内的所有记录都要的
      

  5.   

    我一直用> 和 <,觉得会比between快些。^_^