2012-10-12 65 views
3

我试图在个人资料页面中显示我的成员年龄。在PHP文件我只是说这个代码向用户展示诞生日:从MySQL的DOB获取年龄

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

,并在个人资料页,我有这样的结果:

1364-07-09 

它是一个波斯日期:YYYY-MM-DD

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

我如何展现年龄? :(

回答

6

您可以使用MySQL的TIMESTAMPDIFF()功能在天的差异,或TIMESTAMPDIFF(MONTH, NOW(), dob)

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

它没有显示任何结果! – Alireza

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

1

只是为了多种:

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