将SQL日期格式化为英国格式

时间:2013-04-16 07:06:30

标签: php mysql date

我有以下SQL查询,我想以英国(年/月/日)格式输出 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' ";

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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

希望这可以帮助你:)

答案 2 :(得分: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年是闰年)