表Tab有一字段T date 里面放的是2013-03-15的日期,\
我要查某M月的数据,where条件该怎么写?

解决方案 »

  1.   

    where month(T) = 9 --查询9月份的数据
      

  2.   

    上面都可以,但是如果考虑性能的话,最好指定年份,比如2013年,采用下面的方式:where T >= '2013-M-01' and T < dateadd(month,'2013-M-01')
      

  3.   

    --比如查2013年1月的数据,就用下面,这样它会用到索引!如果用datepart,是不会用到索引的
    select * from tab where t>='20130101' and t>='20130131 23:59' 
      

  4.   

    应该用dateadd()
    where T>=Convert(date,CONVERT(VARCHAR,@Year)+RIGHT('00'+CONVERT(VARCHAR,@Month),2)+'01') 
    AND T<Dateadd(month,1,CONVERT(VARCHAR,@Year)+RIGHT('00'+CONVERT(VARCHAR,@Month),2)+'01') 
      

  5.   

    CONVERT
    datepart
    month
    都是可以的
      

  6.   

    convert(varchar(7),  ziduan,120)  ; 这个需求不仅要获取月 而且还要判断 是哪一年的某一个月 不然  数据则会统计出错;