select * from Table_name where date like '"2006-5-22"%'"
我是这么写的`但是不对~请教各位了`
就是想查询06年X月的所有记录

解决方案 »

  1.   

    如果字段是字符型
    可以用模糊查询
    select * from Table_name where date like '2006-5-%'如果是DateTime型
    只能限定范围
    select * from Table_name where date between '2006-5-1' AND '2006-6-1'
      

  2.   

    你在sql语句里面得用所使用数据库使用的转换函数来把date字段转换为字符型!
    比如sqlserver就是cast,而oracle是to_char
      

  3.   

    是DataTime型
    没办法模糊查询吗?
      

  4.   

    不管是白猫还是黑猫抓住老鼠就是好猫。
    select * from Table_name where date between '2006-5-1' AND '2006-6-1'
      

  5.   

    可以模糊查询
    仓卒之间想到一个比较复杂的办法你可以取得查询时间的年(year)(datetime.year)查询时间的月(month1)(datetime.month)以及查询时间的下一个月(month2)(datetime.addmonth(1).month)如果正好是12月就麻烦了
    然后你可以这样构造一个sql语句了
    "select * from tabel where qdate > cast('"+year+month1+"1"+"' as datetime) and qdate< cast('"+year+month2+"1"+"' as datetime)"
      

  6.   

    从来不建议用所谓的日期模糊查询
    建议你采用一个时间段来查询
    Convert(nchar(10),DatetimeCol,102)>=Convert(nchar(10),yourBeginTime,102) and 
    Convert(nchar(10),DatetimeCol,102)<=Convert(nchar(10),yourEndTime,102) 
    虽然长了点,不过好理解
      

  7.   

    DATEPART(mm,date) = 5
    这是所有date值为5月的记录
    具体请参考DATEPART函数
      

  8.   

    "select * from tabel where qdate > cast('"+year+month1+"1"+"' as datetime) and qdate< cast('"+year+month2+"1"+"' as datetime)"建议如果你照上面的做法,最好能不在sql语句里面这样cast转换,而在外层即构造sql语句前就得到查询时间所在月的一号的datetime和下月一号datetime,这样能提高查询效率,并且你还得给日期字段加上索引
      

  9.   

    select * from Table_name where convert(varchar(7),yourdate,120)='2006-5'ok