将 SQL 日期格式化为英国格式 [重复]
Posted
技术标签:
【中文标题】将 SQL 日期格式化为英国格式 [重复]【英文标题】:Formatting a SQL date into a UK format [duplicate] 【发布时间】:2013-04-08 11:44:12 【问题描述】:我有以下 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' ";
【问题讨论】:
什么数据库系统? now() 表示我认为的mysql。 这是 MySQL @Damien_The_Unbeliever 这是一个常见问题。已经在这个网站上多次询问和回答。为什么我们要添加另一个答案? - php.net/datetime - php.net/strings 【参考方案1】:您不需要在数据库级别进行格式化。如果您将日期存储为日期(正确的方法),只需获取记录并将其发送给客户。应该在您用来显示这些日期的控件上进行格式化。
【讨论】:
谢谢@danish。我也尝试在 PHP 中显示它并且很挣扎。我是一个新手。我之前的帖子不正确。这是我要格式化的 DOB 字段。这是我的 PHP 代码 -我认为使用 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
希望对你有帮助:)
【讨论】:
太棒了!谢谢@Sabari【参考方案3】:不确定如何将年龄格式化为 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 年是闰年的情况)
【讨论】:
以上是关于将 SQL 日期格式化为英国格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Bootstrap Datetimepicker 英国日期格式发布为美国格式