0

我有以下 SQL 查询,我想以英国 (dd/mm/yyyy) 格式输出ageOnLastSeptember日期。谁能告诉我如何实现这一目标?

$sql="select ( if(month(now()) < 9, year(now()) - 1, year(now())) - year(dob) - if(month(dob)<9, 0, 1)  ) as ageOnLastSeptember,first_name,last_name,dob,school,contact_no,family_id,contact_id from members_family where contact_id = '$contact_id' ";

我尝试了以下但它什么也没做

$sql="select date_format(( if(month(now()) < 9, year(now()) - 1, year(now())) - year(dob) - if(month(dob)<9, 0, 1)  ), '%d/%m/%Y') as ageOnLastSeptember,first_name,last_name,dob,school,contact_no,family_id,contact_id from members_family where contact_id = '$contact_id' ";
4

3 回答 3

2

您不需要在数据库级别进行格式化。如果您将日期存储为日期(正确的方法),只需获取记录并将其发送给客户。应该在您用来显示这些日期的控件上进行格式化。

于 2013-04-16T07:11:26.073 回答
2

我认为使用 PHP 格式化日期比使用 MySQL 格式化更容易和更好。从 MySQL 检索数据后,您可以使用 PHP 进行格式化,例如

$date = date("d/m/Y", strtotime('2002-05-18'));

输出将是:18/05/2002

所以你的 PHP 代码将是:

<td>". date("d/m/Y", strtotime($rows['dob'])) ."</td> 

有关 PHP 日期及其格式的更多信息,请参见:http: //php.net/manual/en/function.date.php

希望这可以帮助你:)

于 2013-04-16T07:47:11.350 回答
0

不确定如何将年龄格式化为 DD/MM/YYYY 日期。似乎不合逻辑

要获得以天为单位的年龄,您可以使用以下内容

SELECT FLOOR(NOW(), DATE_ADD(dob, INTERVAL (ABS(DATEDIFF(CONCAT(YEAR(DATE_ADD(NOW(), INTERVAL -8 MONTH)),':09:01'), NOW())) * -1) DAY)) AS Age
FROM members_family 
WHERE contact_id = '$contact_id'

可以定制以给出一个年龄(对于闰年来说要 100% 准确会有点棘手,特别是如果你想处理每 100 年不是闰年但每 400 年是闰年)

于 2013-04-16T07:54:42.363 回答