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

Lan*_*don 17 php mysql sql datetime

当我查询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";
        }
Run Code Online (Sandbox Code Playgroud)

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

San*_*att 6

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

PDO适配器支持YYYY-MM-DD HH:MM:SS并自动将datetime列的值格式化为这种格式。

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


小智 5

您可以格式化它以包括它。%f包含六位数的微秒

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

  • 或者只是执行CONCAT(date)来节省您必须提供的格式。默认的DATETIME格式将包括句点后的小数秒。 (3认同)

ATe*_*Guy -2

DateTime 不支持分秒(微秒或毫秒等)

http://www.php.net/manual/en/class.datetime.php

https://bugs.php.net/bug.php?id=51950

  • 抱歉,是的。准备好的语句存在一个旧错误,但它应该很久以前就被修复了。也许在页面底部 --> http://dev.mysql.com/doc/refman/5.0/en/c-api-prepared-statement-data-structs.html (2认同)