我用这个语句:SELECT * from `test_birthday` where dayofyear(curdate())  - dayofyear(birthday) between 0 and 30]
反而查询出来的不对

解决方案 »

  1.   

    SELECT username, birthday
    FROM test_birthday
    WHERE date_format( birthday, '%m%d' ) 
    BETWEEN date_format( now( ) , '%m%d' ) 
    AND date_format( date_add( now( ) , INTERVAL 120 
    DAY ) , '%m%d' ) 
    LIMIT 0 , 30
    用这个解决了
      

  2.   

     select  *   from test_birthday  where (( DATE_FORMAT(birthday, '%m%d')+0)-( DATE_FORMAT(curdate(), '%m%d')+0)) <= 30; 
      

  3.   

    自行解决就好
    SELECT username, birthday
    FROM test_birthday
    WHERE DATE_FORMAT( birthday, '%m%d' )
    BETWEEN DATE_FORMAT(CURDATE()-INTERVAL 30 DAY,'%m%d')
    AND DATE_FORMAT(CURDATE()+INTERVAL 30 DAY,'%m%d')
    LIMIT 0 , 30;