我正在使用PHP和mysql并使用Date
或DateTime
来保存mysql数据库中的日期。在现场,我一直在显示他们保存在数据库中的日期。
但现在我想使用一种格式在网站上随处显示日期:
April 17 2013
或
April 17 2013 12:20:50
我知道我可以使用date
和strtotime
函数以上述格式显示日期。但是我有很多地方有日期显示代码。因此,我希望自动化当前代码的工作过程,并以上述格式显示日期。
如何创建 mysql触发器或某些php魔法可以创建转换所有日期自动运行SELECT查询而不更改我的sql或php代码,因为我的代码中有很多地方和在所有地方更改代码会有点过分吗?
例如:
保存在数据库中的日期: 2013-04-16 12:41:26
选择查询: SELECT * FROM myTable
PHP: echo $row->dated;
显示2013-04-16 12:41:26
我希望在不更改我的PHP代码的情况下,日期应该在整个网站上以全局显示上述格式。
有任何想法,请问如何实现?
答案 0 :(得分:4)
您可以使用DATE_FORMAT()
SELECT DATE_FORMAT(myDate, '%M %d %Y %h:%i') myDate
FROM TableName
并在PHP中回显:$row->myDate
MySQL Trigger不会投影值,只会在CrUD
操作期间触发。
答案 1 :(得分:1)
我想建议你一种我喜欢使用的替代方法。
您应该使用epoch
时间。纪元时间基本上是自1 January 1970
如果我喜欢的好处是,它很容易计算
因为你只处理数量的时间差异
秒,而不是复杂的格式,例如sec min hrs
另一个好处是它很容易存储,因为它的a 整数,所以你可以将它存储在一个sql db中,并让你的PHP代码理解它,而不必担心格式和类似的东西。
在php中,如果你使用time()
函数,它将返回纪元时间。
如果您想以用户友好的方式显示它。您可以使用以下代码:
$epoch = time();
$dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00
如您所见,日期的格式非常灵活,因此易于使用。
在1周前找到日期的一个很好的例子:
$epoch = time() - 604800; //604800 seconds = 7 days
$dt = new DateTime("$epoch"); // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00