我有以下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' ";
我认为使用PHP格式化日期比使用MySQL格式化更容易更好。从MySQL中检索数据后,可以使用PHP格式化,如
$date = date("d/m/Y", strtotime('2002-05-18'));
输出为:18/05/2002
<td>". date("d/m/Y", strtotime($rows['dob'])) ."</td>
关于PHP日期和格式的更多信息可以在这里找到:http://php.net/manual/en/function.date.php
希望这对你有帮助
您不需要在数据库级别进行格式化。如果您将日期存储为日期(正确的方式),只需获取记录并将其发送给客户端。格式化应该在您用来显示这些日期的控件中完成。
不确定如何将年龄格式化为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年是闰年)