PHP 如何从 Mysql 返回 datetime(6)?

2022-08-30 23:38:23

当我查询一个 dateTime(6) 时,PHP 正在截断我的 6 秒小数部分。

这是我的php代码的一个例子:

$sql = 'SELECT date FROM tbl';
        $statement = $connection->prepare($sql);
        $statement->execute();
        $statement->store_result();
        $statement->bind_result($date);
        while ($statement->fetch()) 
        {
        echo $date."\n";
        }

这将返回 2014-01-08 21:31:15,而不是 2014-01-08 21:31:15.995000,后者存储在表中的内容。如何获取实际存储在表中的内容?


答案 1

问题在于您用于与Mysql通信的PHP适配器。据我所知,您正在使用PDO适配器来获取查询结果。但是,此适配器不支持秒的小数部分 (YYYY-MM-DD HH:MM:SS.F).

PDO 适配器支持 YYYY-MM-DD HH:MM:SS,并自动将日期时间列的值格式化为此格式。

这是PDO适配器本身的一个错误。请找到下面的链接作为参考:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format-of-datetime-fields


答案 2

您可以设置其格式以包含它。%f 包括六位数微秒

 SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s.%f') FROM tbl

推荐