Когда я запрашиваю 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, что и хранится в таблице. Как я могу получить то, что фактически хранится в таблице?
Проблема заключается в использовании адаптера PHP, который вы используете для связи с Mysql. Насколько я вижу, вы используете адаптер PDO для получения результата запроса. Однако этот адаптер не поддерживает дробные секунды (ГГГГ-ММ-ДД ЧЧ: ММ: 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
Возможно, вам придется отформатировать его, чтобы включить его -% f включает микро-время, не уверен, что это даст вам микросекунду или все это. Вы также можете попробовать% x вместо% f, поскольку это catch для того, что не рассматривается в формате.
SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i:%f') FROM tbl
DateTime не поддерживает разделенные секунды (микросекунды или миллисекунды и т. Д.)
в вашем случае вы можете сохранить значение в MySQL как VARCHAR и case / преобразовать его в datetime при его чтении.
У меня была такая же проблема, и мне ничего не помогло, кроме преобразования