有表如下
姓名    Month    Day      
张三    8        11 
张三    8        2 
张三    8        3 
张三    8        4
李四    9        11
李四    9        13 
李四    9        15 
孙六    10       1 
李四    10       22 
现要查出Month >= 8 并且 day > 11 并且 Month <= 10 and  days < 4 之间所所有数据(相当于日期在8-11到10-4之间) .请问一下这个where条件要怎样写.where (month >=8 and day >= 10) and (month <= 9 and days <= 20) 这样能查出数据,如果成了 (month >=8 and day >= 10) and (month <= 9 and days <= 5)就没数据出来了.

解决方案 »

  1.   

    那样求出来的是不对的
    还是转化成日期好一点
    where '2000-'+Convert(nvarchar,month)+'-'+Convert(nvarchar,day) between '2000-8-11' and '2000-10-4'
      

  2.   

    TRY:直接這樣寫
    where month >= 8 and day > 4 and mont <= 10 and day < 11
      

  3.   

    或者
    select * from table 
    where month=8 and day>= 10 
    union 
    select * from table 
    where month>8 and month<11
    union 
    select * from table 
    where month=11 and day<=4
      

  4.   

    where month >= 8 and day > 4 and mont <= 10 and day < 11
    如果第二day 1的话就查不出数据了
      

  5.   

    declare @Test table (姓名 varchar(10),Month int,Day int)
    insert @Test
    select '张三',8,11
    union all select '张三',8,2
    union all select '张三',8,3
    union all select '张三',8,4
    union all select '李四',9,11
    union all select '李四',9,13
    union all select '李四',9,15
    union all select '孙六',10,1
    union all select '李四',10,22select * from @Test where 
    --Month >= 8 并且 day > 11
    replicate('0', 2- len(cast(Month as varchar(2)))) + cast(Month as varchar(2)) > '0811' and 
    --Month <= 10 and day < 4
    replicate('0', 2- len(cast(Day as varchar(2)))) + cast(Day as varchar(2)) < '1004'