【发布时间】:2012-05-13 14:27:30
【问题描述】:
场景:我的 PHP 应用程序将始终使用日期字段 DD-MM-YYYY。 MySQL 显然总是将日期存储在 YYYY-MM-DD
免责声明:我知道如何手动更改日期格式 - 这不是问题
问题:什么是确保我的应用程序始终检索 DD-MM-YYYY 中的日期的好、干净、优雅的方法,而 mySQL 总是 接收要存储的 YYYY-MM-DD 中的日期。
即基本上,我希望有一个自动进行转换的地方,而不必每次执行 SQL 查询时都调用它。这样,如果我“忘记”进行 date_conversion 也没关系 - 它每次都会发生......
我正在考虑某处的某种回调?
(编辑)我的想法:我目前使用 Codeigniter 框架。我正在考虑使用 MY_Model,使用 before_get、before_insert 和 before_update 回调。在这些回调中,我可以使用类似这样的 SELECT 来遍历所有字段:
// {insert my query here to get records from DB. Then:
$query = $this->db->query();
$fields = $query->field_data();
foreach ($fields as $field)
{
if ($field->type == 'date')
// do conversion here
}
并为 UPDATE/INSERT 回调执行类似的操作。据我所知,数据库上没有额外的工作(因为 Codeigniter 在 $query 结果中提供了信息)
想法?
编辑 2: 其他想法:只需为每个模型执行此操作,并定义哪些字段是日期字段,然后在每个回调中应用更改...是的...可能会这样做。 ..?
【问题讨论】:
-
听起来像是一个寻找第一个分隔符 ('-') 并在输入是 MySQL 时返回 PHP 格式的函数,反之亦然。如果您记得在 PHP 和 MySQL 之间的日期移动时将所有日期包装在函数中,可能会起作用。
-
感谢 geoB - 但我可以把它放在哪里?即据我所知,mySQL 没有回调。所以我需要一个函数,它会检查所有值,看看它是否是一个日期,然后测试是否需要转换......
-
您是在使用 mysql_query 来收集数据,还是在使用诸如 Zend_Db 之类的分层库?
-
我在想一个隐藏在包含中的用户定义的实用函数。但是,如果您正在寻找可以查看 MySQL 中的每个字段值和每个 PHP 变量的东西,我怀疑这样一个函数的开销是否值得付出努力。你会如何使用这个神奇的日期功能?
-
我实际上在使用 Codeigniter - 我将在上面编辑我的问题,给你我目前的想法
标签: php mysql codeigniter date