3

我正在尝试在个人资料页面中显示我的会员年龄。在 php 文件中,我刚刚添加了这段代码来显示用户的生日:

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

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

1364-07-09

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

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

我怎么能显示年龄?:(

4

4 回答 4

6

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

SELECT TIMESTAMPDIFF(YEAR, dob, CURRENT_DATE) AS age FROM dle_users
于 2012-10-12T19:37:19.000 回答
2

看看 MySQL(如果你正在使用的)日期函数,它们会为你完成大量的转换。

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

也许DATEDIFF( NOW(), dob )或一些这样的错误,但这会在几天或TIMESTAMPDIFF(MONTH, NOW(), dob )几个月内返回差异

于 2012-10-12T19:30:52.113 回答
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

于 2012-10-12T19:42:43.857 回答
1

只为多样化:

select year(now()) - year(dob) - if(dayofyear(now()) < dayofyear(dob), 1, 0) from dle_users
于 2012-10-12T19:49:06.973 回答