Подтвердить что ты не робот

PHP Как вернуть datetime (6) из Mysql?

Когда я запрашиваю 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, что и хранится в таблице. Как я могу получить то, что фактически хранится в таблице?

4b9b3361

Ответ 2

Проблема в адаптере PHP, который вы используете для связи с Mysql. Насколько я вижу, вы используете адаптер PDO для получения результата запроса. Однако этот адаптер не поддерживает доли секунды (ГГГГ-ММ-ДД ЧЧ: ММ: СС .F).

Адаптер PDO поддерживает ГГГГ-ММ-ДД ЧЧ: ММ: СС и автоматически форматирует значение столбцов даты и времени в этот формат.

Это ошибка в самом адаптере PDO. Пожалуйста, найдите ссылку ниже для справки: http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format-of-datetime-fields

Ответ 3

Это безумие, это до сих пор официально не поддерживается mysqli в PHP 7.1, но в любом случае, здесь работа.

select concat(`DateTime6`)`DateTime6` from ...

В основном, литье его как строки работало для меня, как уродливое, как это.

Ответ 4

Эта ошибка была обнаружена в пакете PHP Mysql (PECL) и долгие годы находилась в неразрешенном состоянии. Это было окончательно исправлено в PHP v7.3.0.

Для получения подробной информации об ошибке: https://bugs.php.net/bug.php?id=76386

Ответ 5

в вашем случае вы можете сохранить значение в MySQL как VARCHAR и case/преобразовать его в datetime при его чтении.

У меня была такая же проблема, и мне ничего не помогло, кроме преобразования