将3列(日,月,年)转换为PHP日期/时间戳

时间:2013-09-03 17:55:45

标签: php mysql

我有一个包含3列的数据库,所有VARCHAR(20)

dob_day
dob_month
dob_year

如何将这些转换为PHP日期/时间戳并获取人的年龄(行)

例如,如果我有以下内容:

dob_day = 07
dob_month = 08
dob_year = 1994

这需要显示19,因为用户将是19岁

2 个答案:

答案 0 :(得分:3)

您应该将出生日期存储为date。此解决方案将从数据库端返回年龄:

SELECT TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) AS `age`

<强>结果

| AGE |
-------
|  19 |

See a demo

答案 1 :(得分:0)

试试这个:

$dob_day = '07';
$dob_month = '08';
$dob_year = '1994';

date_default_timezone_set('UTC');
$now = new DateTime(Date('Y-m-d'));


$diff = $now->diff(new DateTime($dob_month.'-'.$dob_day.'-'.$dob_year));

printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d);

打印:19 years, 1 month, 26 days

如果你只是需要打印年份,这样的事情可能有用:

$dob_year = 1994;
date_default_timezone_set('UTC');
$now = new DateTime(Date('Y-m-d'));
$date = DateTime::createFromFormat("Y-m-d", Date("Y-m-d"));
$year = $date->format("Y");
echo $year - $dob_year;

打印:19