从MySQL中的DOB获取Age

时间:2012-10-12 19:29:04

标签: php mysql date

我正试图在个人资料页面显示我的成员年龄。在php文件中我刚添加此代码以显示用户出生日期:

$data = $db->super_query( "SELECT dob FROM dle_users" );
$tpl->set("{bdate}", $data['dob']);

在个人资料页面中我有这个结果:

1364-07-09

这是波斯语的日期:yyyy-mm-dd

现在我需要显示成员年龄,我在谷歌和这个网站搜索,我找到了一些答案和提示,但不会为我工作!我不知道为什么。

我怎么能显示年龄? :(

4 个答案:

答案 0 :(得分:6)

您可以使用MySQL的TIMESTAMPDIFF()功能:

SELECT TIMESTAMPDIFF(YEAR, dob, CURRENT_DATE) AS age FROM dle_users

答案 1 :(得分:2)

看看MySQL(如果这就是你正在使用的)日期函数,他们会为你做一整套转换。

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

可能DATEDIFF( NOW(), dob )或某些此类malarkey,但这会返回天数差异,或TIMESTAMPDIFF(MONTH, NOW(), dob )几个月

答案 2 :(得分:1)

您可以使用

SELECT DATEDIFF(dob, NOW()) AS difference from dle_users;

这将为您提供使用PHP

转换为各种格式的日期差异
date("m/d/y g:i (A)", $DB_Date_Field);

您也可以直接使用TIMESTAMPDIFF:

SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) as difference from dle_users;

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampdiff

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_curdate

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

答案 3 :(得分:1)

只是为了变化:

select year(now()) - year(dob) - if(dayofyear(now()) < dayofyear(dob), 1, 0) from dle_users