2015-09-11 37 views
-1

這是出生日期的列表。現在我需要得到身份證或每個生日是今天,或明天或昨天的人。從出生之日起,如何在mysql中獲取昨天,今天和明天的生日清單?

我一直在嘗試很多,但沒有得到正確的結果。請評論正確的演示,以便它能幫助我理解。

我的數據庫結構爲:

ID   DOB 
1   2001-10-15 
2   2002-09-13 
3   2002-09-11 
4   2003-05-09 
5   2006-09-12 

讓我們的EX:今天是2015年11月9日。所以我想要的結果像

ID   DOB   DAY 
5   2002-09-12 Today 
3   2002-09-11 Yesterday 
2   2006-09-13 Tomorrow 

回答

0

試試下面的查詢

SELECT DOB, 
     IF (DAY(DOB)=DAY(NOW()) 
      AND MONTH(DOB)=MONTH(NOW()), 
          'TODAY', 
          IF (DAY(DOB) =DAY(ADDDATE(NOW(),-1)) 
           AND MONTH(DOB)=MONTH(ADDDATE(NOW(),-1)), 
              'Yesterday', 
              IF (DAY(DOB) =DAY(ADDDATE(NOW(),+1)) 
               AND MONTH(DOB)=MONTH(ADDDATE(NOW(),+1)), 
                   'Tomorrow', 
                   'Future'))) 
FROM tmp; 

輸出

2015年9月10日昨天

2015年9月11日今天

2015年9月12日明天

2015-09-13未來

+0

我的代碼是這樣的 - 它使我有同樣請檢查出來,並回答我,這是可以接受的太 - 選擇 ID,學校ID, DOB, DATE_FORMAT(CURDATE() - 1, '%Y') - DATE_FORMAT (dob,'%Y')+ IF( DATE_FORMAT(dob,'%m%d') DATE_FORMAT(dob,'%m%d'),1,0) YEAR, CURDATE())AS days_to_birthday FROM se_users where school_id = 970 HAVING days_to_birthday IN(-1,0,1)ORDER BY days_to_birthday ASC –

+0

很高興它的工作!,似乎你嘗試基於INTERVAL,而且應該工作! – Suresh

0

試試看看這個代碼。

<?php 

$today=date('Y-m-d'); 
$yesterday=date('Y-m-d',strtotime("-1 days")); 
$tomorrow=date('Y-m-d',strtotime("+1 days")); 


$sql=mysql_query("select id from tablename where dob='$today' OR dob='$yesterday' OR dob='$tomorrow'"); 

while($row=mysql_fetch_array($sql)) 
{ 

    echo $row; 
} 

?> 
+0

感謝您的回答,但不同用戶的出生日期不同。我需要比較月份和日期。 –

相關問題