2015-12-02 131 views
0

我有一張表,用於存儲我的客戶姓名和出生日期。例如下面:出生日期到使用PHP的年齡範圍

name  DOB   gender  email 
Tony  1987-04-20 male  [email protected] 
Susan  1985-06-13 female  [email protected] 

在我的網站,我想根據自己的出生日期,並顯示爲年齡範圍是這樣的(在18,18-25,26-35,36-45,46-搜索用戶55歲以上55)

對於託尼和蘇珊,他們將屬於26-35類別。在我的網站上,我希望有一張表格按年齡範圍顯示名稱,如下所示。

Under 18 18-25 26-35 36-45 46-55 Over 55 
xxx  xxx  Tony xxx  xxx  xxx 
xxx  xxx  Susan xxx  xxx  xxx 

使用PHP我怎樣才能找到D.O.B的年齡範圍?

+1

你自己寫了什麼代碼?告訴我們你已經嘗試過什麼,人們可以幫助你。 – MeanGreen

+0

Mysql我猜?已經查詢了? – giorgio

+0

檢查我的答案你得到你怎麼辦@nodeffect –

回答

1

我有一個例子,所以你可以得到你如何能做到

步驟:1

SELECT 
    round(DATEDIFF(CURRENT_DATE,t.birthdate)/365) AS ageInYears, 
    name 
FROM member t 

得名和從桌子成員的年齡

步驟:2

SELECT 
    (`ageInYears` > 40) as `data1` 
    ,name 
    FROM (step: 1) as t 

創建列 'DATA1' 年齡> 40,則年齡比較 - 等(ageInYears < 18)data1創建多個列,(ageInYears> 18和ageInYears < 25)作爲data2

步驟:3

SELECT 
    MAX(IF(`data1` = 1,name,null)) '35to40', 
    MAX(IF(`data1` = 0,name,null)) '0to35' 
    From (step 2) as t group by name 

創建的列35to40和0to35使用if條件,以檢查其中 'DATA1'= 1,並把有名稱,如果不爲1比空

最終結果

SELECT 
MAX(IF(`data1` = 1,name,null)) '35to40', 
MAX(IF(`data1` = 0,name,null)) '0to35' 
From (SELECT 
     (`ageInYears` > 40) as `data1` 
     ,name 
      from (SELECT 
       round(DATEDIFF(CURRENT_DATE,t.birthdate)/365) AS ageInYears 
       ,name 
        FROM member t) as t) as t group by name 

O/p

35to40  0to35 
NULL asdasd 
dhara NULL 
NULL g 
ravi NULL 
sonam NULL 
+0

我已經創建了兩列,你可以做所有隻需要一些額外的努力 –

+0

這有助於很多謝謝你... – nodeffect

1

試試下面的代碼

 foreach($rows as $row){ 
      $d1 = new DateTime($row->DOB); 
      $d2 = new DateTime(date("Y-m-d")); 

      $diff = $d2->diff($d1); 

      echo $diff->y; 

     }