我有一个表,存储我的客户姓名和出生日期。例如:
name DOB gender email
Tony 1987-04-20 male tony@tony.com
Susan 1985-06-13 female susan@susan.com
在我的网站上,我想根据他们的出生日期搜索用户,并显示为年龄范围,如下图所示(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
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
使用if条件创建列35to40和0to35,以检查"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
尝试以下代码
foreach($rows as $row){
$d1 = new DateTime($row->DOB);
$d2 = new DateTime(date("Y-m-d"));
$diff = $d2->diff($d1);
echo $diff->y;
}