2016-03-04 61 views
0

因此,我的查詢有麻煩,它選擇接下來的三個生日,但說如果有一個生日是在4月12日。一旦四月一號出現,那個生日不再顯示。MYSQL生日查詢

SELECT `users`.`name`, 
     Date_format(`users_detail`.`dob_date`, '%d') AS day, 
     Date_format(`users_detail`.`dob_date`, '%M') AS month 
FROM `users_detail` 
     JOIN `users` 
     ON `users`.`id` = `users_detail`.`id` 
WHERE Date_add(`users_detail`.`dob_date`, 
       INTERVAL Year(Curdate())- Year(`users_detail`.`dob_date`) + IF( 
       Dayofyear( 
       Curdate()) >= Dayofyear(`users_detail`.`dob_date`), 1, 0) year) 
     BETWEEN Curdate() AND Date_add(Curdate(), INTERVAL 11 month) 
ORDER BY `users_detail`.`dob_date` ASC 
LIMIT 3 
+0

您正試圖選擇用戶的下一個3出生日期?您以什麼格式存儲'dob_date'列? –

回答

0

你可以試試嗎?

SELECT `users`.`name` 
FROM `users_detail` 
WHERE DATE_ADD(`users_detail`.`dob_date`, 
       INTERVAL YEAR(CURDATE())-YEAR(`users_detail`.`dob_date`) 
         + IF(DAYOFYEAR(CURDATE()) > DAYOFYEAR(`users_detail`.`dob_date`),1,0) 
       YEAR) 
      BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 11 month) 
ORDER BY `users_detail`.`dob_date` ASC 
LIMIT 3