某表某时间字段是datetime2008-08-21 11:11:11
2008-09-21 11:11:11
2008-10-21 11:11:11我要找出大于2008年8月份的数据为什么我写 where 字段>'2008-08' 或者 date_format(字段,'%Y%m')>'2008-08'结果都会包含8月21号那条、?

解决方案 »

  1.   

    where DATE_FORMAT(时间字段,'%Y-%m')>'2008-08'
      

  2.   

    或者 date_format(字段,'%Y%m')>'2008-08' 你的date_format里设置格式跟你条件的都不一样.
      

  3.   

    为什么我写 where 字段>'2008-08' 或者 date_format(字段,'%Y%m')>'2008-08'因为你的 '2008-08' 是个字符串,不是日期,所以MySQL就会按照字符串的形式来比大小。这样 字符串'2008-08-21 11:11:11'显然大于 '2008-08'date_format(字段,'%Y%m')>'2008-08' 中date_format(字段,'%Y%m') = '200808' 由于对应位置的 '0' > '-' 所以也大了。建议用
    where  字段>= '2008-09-01' 来实现相同的功能。这种效率比较高,并可以利用索引。
      

  4.   

    要写到天,where 字段 > '2008-07-30'就可以了