我有以下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' ";
答案 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年是闰年)