When I query a dateTime(6) PHP is truncating my 6 fractional seconds.
Here is an example of my php code:
$sql = 'SELECT date FROM tbl';
$statement = $connection->prepare($sql);
$statement->execute();
$statement->store_result();
$statement->bind_result($date);
while ($statement->fetch())
{
echo $date."\n";
}
This returns 2014-01-08 21:31:15 instead of 2014-01-08 21:31:15.995000 which is what is stored in the table. How can I get what is actually stored in the table?
The problem is with the PHP Adapter you are using to communicate with Mysql. As far as I can see you are using PDO adapter to fetch the query result. However, this adapter does not support fractional seconds (YYYY-MM-DD HH:MM:SS.F).
The PDO adapter supports YYYY-MM-DD HH:MM:SS and automatically formats the value of datetime columns to this format.
This is a bug in PDO adapter itself. Please find the link below for reference: http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format-of-datetime-fields
You can format it to include it. The %f includes the six-digit microseconds .
SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s.%f') FROM tbl
It's crazy this still isn't officially supported by mysqli
in PHP 7.1, but anyway, here's a work around.
select concat(`DateTime6`)`DateTime6` from ...
Basically casting it as a string worked for me, as ugly as that is.
This bug was finally fixed in PHP v7.3.0.
For related bug details: https://bugs.php.net/bug.php?id=76386
DateTime does not support split seconds (microseconds or milliseconds etc.)
in your case you might save the value in MySQL as VARCHAR and case / convert it to datetime when reading it.
I had the same problem and nothing helped me except converting
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.