【问题标题】:Formating multiple mySQL date fields at the same time同时格式化多个 mySQL 日期字段
【发布时间】:2009-07-11 00:57:26
【问题描述】:

我有一个包含 12 个时间戳列和 3 个其他字段的表。 我无法更改时间戳列上的字段类型。

我需要以 m/d/y 的形式向用户显示所有 15 个字段。有没有一种方法可以同时格式化它们,而不必对每个都应用 DATE_FORMAT? 我宁愿不必做

SELECT DATE_FORMAT(field, '%c/%e/%y') AS field
如果可能的话,每一个。

我正在使用 mySQL 和 PHP,我不在乎转换发生在哪里。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    您可以在php中编写一个简单的日期转换例程,如下所示:

    function mysql2table($date) {
        $new = explode("-",$date);
        $a=array ($new[2], $new[1], $new[0]);
    return $n_date=implode("-", $a);
    }
    

    我从这里偷的:http://www.daniweb.com/code/snippet736.html#

    然后简单地遍历您的 SQL 列结果,检查该值是否为日期并进行转换。

    【讨论】:

    • 谢谢...这是我的想法,这很有帮助,因为我已经有了可以调用的日期转换功能...我希望有一个多合一的解决方案...哦,好吧。
    【解决方案2】:

    您是否考虑过使用像 MDB2 或 PDO 这样可以为您转换类型的数据库层? MDB2 有一个日期类型,它显示 YYYY-MM-DD 格式,但可以通过 strftime 和 strtotime 轻松转换为 m/d/y。

    一个使用MDB2的例子:

    $dsn = "mysql://user@pass/db"; (not sure about DSN format, you might have to poke the MDB2 documentation)
    $connection = MDB2::connect ($dsn);
    $connection->loadModule ("Extended");
    $rows = $connection->getAll ("your query", array ('date', ...), $parameters, array (paramater-types), MDB2_FETCHMODE_OBJECT);
    
    if (MDB2_Driver_Common::isError ($rows)) throw new Exception ("Error!");
    else { foreach ($rows as $row) { ...Do something... } }
    

    您可以在MDB2 on InstallationWiki 找到更多关于以这种方式使用 MDB 的文档。此外,您还可以找到 MDB2 数据类型列表以及它们映射到的显示值。此外,Docs for MDB2_Extended 将是一个很好的信息来源。

    编辑:显然,您必须在每一行上分别使用 strftime 和 strtotime 。如果您将MDB2_FETCHMODE_OBJECT 切换为MDB2_FETCHMODE_ORDEREDMDB2_FETCHMODE_ASSOC 以上,您可能可以使用foreach 循环对所有需要重新格式化的行运行strftime 和strtotime。

    【讨论】:

    • 谢谢...我确实看过 PDO - 这不是我现在可以深入研究的东西。
    • 啊。好吧,我希望您有时间研究它们,它们可以使编写代码变得很多更容易。 MDB2 甚至可以自动为您执行更新和插入,而无需您编写一点 SQL。可能也选择了,尽管我还没有弄清楚这一点。 :)
    【解决方案3】:

    我认为不可能,查询在返回结果之前不知道列是什么,您必须告诉它更改每个日期时间的格式。

    马特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 2023-03-29
      • 2013-08-13
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多