比如:我有一个表叫classmate,里面有一个字段叫birth,类型是date,我想select出当前服务器时间与birth时间相差两个月内的人的数据,所select的时间必须比服务器时间要早,不能已经过了的,也可以说我想select出在与当前时间比较在2个月内快生日的同学.

解决方案 »

  1.   

    select * from tt where 
    birth<=DATE_ADD(curdate(),INTERVAL -2 MONTH)
      

  2.   

    or
    select * from tt where  
    birth<=curdate() - INTERVAL 2 MONTH
      

  3.   

    select *
    from classmate
    where birth + interval (year(curdate())-year(birth)+if(DAYOFYEAR(birth)<DAYOFYEAR(curdate()), 1,0)) year  < curdate() + interval 2 month
      

  4.   

    上面方法未考虑闰年的处理。 29-FEB过生日的同学比较麻烦。