使用PHP

时间:2015-12-02 10:58:25

标签: php

我有一张桌子,用于存储我的客户姓名和出生日期。例如下面:

name       DOB          gender      email
Tony       1987-04-20   male        tony@tony.com
Susan      1985-06-13   female      susan@susan.com

在我的网站上,我想根据他们的DOB搜索用户并显示为年龄范围(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找到年龄范围?

2 个答案:

答案 0 :(得分:1)

尝试以下代码

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

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

            echo $diff->y;

        }

答案 1 :(得分: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){{1 }}

步骤:3

data2
  

使用if条件创建第35至40栏和第0至35行,以检查'data1'= 1的位置,如果不是1,则将名称放在

最终结果

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

O / P

 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